Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
f41a9d7
Implement IInterpretableModel methods in AutoMLModelBase (US-BF-007) …
ooples Oct 17, 2025
9e2e2c2
Implement ICloneable methods and IParameterizable.WithParameters in A…
ooples Oct 18, 2025
b476452
Fix IPipelineStep Generic Type Definitions (US-BF-001) (#104)
ooples Oct 18, 2025
b651d5b
Refactor NeuralNetworkBase: Remove redundant methods (US-CI-001, US-C…
ooples Oct 18, 2025
76496fe
Implement IModelSerializer and IFullModel methods in SuperNet (US-BF-…
ooples Oct 18, 2025
142e912
Implement IModelSerializer.Deserialize in AutoMLModelBase (US-BF-003)…
ooples Oct 18, 2025
98bf040
Implement IInterpretableModel methods in SuperNet (US-BF-014) (#109)
ooples Oct 18, 2025
008c0aa
Implement 8 critical bug fixes for AutoML and Neural Network types (U…
ooples Oct 18, 2025
da79f6f
Fix GitHub Copilot review comments and merge conflict (PR #112)
ooples Oct 18, 2025
536488e
Address all 9 GitHub Copilot code review comments (PR #112)
ooples Oct 18, 2025
9323188
Implement proper parameter count caching for production performance (…
ooples Oct 18, 2025
7adb8be
Update src/AutoML/SuperNet.cs
ooples Oct 18, 2025
0c315c8
Fix all remaining GitHub Copilot comments with production-ready code …
ooples Oct 18, 2025
3d5a5e0
Update src/AutoML/AutoMLModelBase.cs
ooples Oct 18, 2025
e15e246
Add proper path traversal security validation to SaveModel and LoadMo…
ooples Oct 18, 2025
10c9f10
Fix all GitHub Copilot code review comments (PR #112)
ooples Oct 18, 2025
0ab9faa
Enhance directory traversal security and apply modern C# patterns (PR…
ooples Oct 19, 2025
3c1da91
Add missing evaluation metrics to ErrorStats<T> and PredictionStats<T…
ooples Oct 19, 2025
ac86047
Implement GetParameterCount method in ConvolutionalNeuralNetwork<T> (…
ooples Oct 19, 2025
8605c32
US-BF-006: Initialize non-nullable properties in interpretability cla…
ooples Oct 19, 2025
dbb9896
US-BF-002: Add missing properties to ModelMetaData<T> (#115)
ooples Oct 19, 2025
99047a1
Fix CS8618: Initialize non-nullable fields in NeuralNetworkBase.cs (#…
ooples Oct 19, 2025
0e2e471
Fix Vector<T> to Tensor<T> conversion issues (Part 1) - US-BF-010 (#123)
ooples Oct 19, 2025
badbc98
US-BF-011: Resolve Vector<T> to Tensor<T> conversion issues (Part 2) …
ooples Oct 19, 2025
87f833b
US-BF-018: Implement missing methods in NeuralNetworkArchitecture<T> …
ooples Oct 19, 2025
63c4d05
US-BF-016: Implement GetParameterCount method in NeuralNetworkBase<T>…
ooples Oct 19, 2025
263ef8b
Implement GetParameterCount method in 6 neural network classes (US-BF…
ooples Oct 19, 2025
2634a22
US-BF-003: Add IFullModel interface members (Part 1) - Fix AutoMLMode…
ooples Oct 19, 2025
6815434
US-BF-013: Implement GetParameterCount method in neural network class…
ooples Oct 19, 2025
56d738d
US-BF-012: Fix Vector<T> to Tensor<T> conversion issues (Part 3) (#125)
ooples Oct 19, 2025
c68faad
Fix US-BF-008: Initialize non-nullable properties in CounterfactualEx…
ooples Oct 19, 2025
dad17b1
Add missing enum members (US-BF-001) (#116)
ooples Oct 19, 2025
e16e37b
US-BF-004: Implement IFullModel interface members (Part 2) (#119)
ooples Oct 19, 2025
54a79b9
US-BF-007: Initialize non-nullable properties in FairnessMetrics.cs (…
ooples Oct 19, 2025
3196023
Implement US-BF-017: Resolve missing InterpretableModelHelper in Neur…
ooples Oct 19, 2025
60c5201
Document critical 'required' keyword incompatibility with net462
ooples Oct 19, 2025
830781c
Fix CS0656: Remove required keyword for .NET Framework 4.6.2 compatib…
ooples Oct 19, 2025
202a848
Add placeholder IParameterizable implementations (#135)
ooples Oct 19, 2025
03a9c62
Add placeholder IFeatureAware implementations (#136)
ooples Oct 19, 2025
38a808d
Fix CS0535 and CS0736: Add LoadModel instance methods (#134)
ooples Oct 19, 2025
0269c6b
Fix interpretability initialization errors (#137)
ooples Oct 20, 2025
14eda96
Add comprehensive CI/CD pipeline (#138)
ooples Oct 20, 2025
6e3376e
fix(US-BF-013): Extend ActivationFunctionFactory mappings (ReLU/Sigmo…
ooples Oct 22, 2025
130f4bc
[US-IF-005]: Implement missing activation functions in ActivationFunc…
ooples Oct 22, 2025
8fd7d0f
ci: Add .NET 6/8 + net46 CI/CD, quality gates, commitlint, release (T…
ooples Oct 22, 2025
040c181
fix(US-BF-015): Implement delegations in InterpretableModelHelper (gl…
ooples Oct 22, 2025
573d163
[US-BF-018]: Add ProbabilityOfImprovement acquisition function (#158)
ooples Oct 22, 2025
f716023
[US-BF-011]: Implement remaining ModelIndividual methods (#157)
ooples Oct 22, 2025
1d2e8f1
[US-BF-008]: Implement SaveModel/LoadModel for DecisionTree base clas…
ooples Oct 22, 2025
c7b6e5c
[US-BF-005]: Implement SaveModel/LoadModel for OptimizerBase (#145)
ooples Oct 23, 2025
9e9886a
[US-BF-004]: Implement SaveModel/LoadModel for VectorModel (#144)
ooples Oct 23, 2025
18b3cfe
[US-BF-003]: Implement SaveModel/LoadModel for ExpressionTree (#142)
ooples Oct 23, 2025
49842b8
[US-BF-012]: Implement IFullModel methods in PredictionModelResult (#…
ooples Oct 23, 2025
f6c377d
[US-BF-006]: Implement SaveModel/LoadModel for RegressionBase (#146)
ooples Oct 23, 2025
9232624
[US-BF-007]: Implement SaveModel/LoadModel for TimeSeriesModelBase (#…
ooples Oct 23, 2025
1defc9f
[US-BF-002]: Implement SaveModel/LoadModel for NeuralNetworkModel (#149)
ooples Oct 23, 2025
b9c853b
[US-BF-009]: Implement SaveModel/LoadModel for NonLinearRegressionBas…
ooples Oct 23, 2025
1fbf346
[US-BF-001]: Implement SaveModel/LoadModel for ModelIndividual (#154)
ooples Oct 23, 2025
6456f6c
[US-BF-020]: Implement persistence for MappedRandomForestModel (deleg…
ooples Oct 23, 2025
17540a9
[US-IF-003]: Implement missing neural network layer functionality (#165)
ooples Oct 23, 2025
afaa5dc
[US-IF-009]: Replace NotImplementedException with InvalidOperationExc…
ooples Oct 23, 2025
45316fa
[US-BF-016]: Implement FeatureAware methods in ExpressionTree (#150)
ooples Oct 23, 2025
7c69ff6
[US-IF-002]: Verify time series decomposition implementations (#166)
ooples Oct 23, 2025
0073244
[US-IF-001]: Complete model serialization (#174)
ooples Oct 23, 2025
24006f1
[US-CI-001]: Replace intentional NotImplementedException with Invalid…
ooples Oct 23, 2025
f2b75ea
fix: add .worktrees and worktrees to .gitignore
ooples Oct 23, 2025
7e5eab9
Merge branch 'merge-dev2-to-master' of https://github.com/ooples/AiDo…
ooples Oct 23, 2025
e7c2072
[US-BF-011]: Implement IFullModel/IFeatureAware methods in ModelIndiv…
ooples Oct 23, 2025
e0930aa
[US-IF-010]: Implement missing spiking neuron types (#164)
ooples Oct 23, 2025
46cd1ad
[US-IF-007]: add missing ProbabilityOfImprovement to AcquisitionFunct…
ooples Oct 23, 2025
3c8416a
[US-BF-019]: Replace NotImplementedException with ArgumentOutOfRangeE…
ooples Oct 23, 2025
f51da84
fix(us-ci-001): replace intentional notimplementedexception with inva…
ooples Oct 23, 2025
b7b1b85
[US-BF-007]: Fix SuperNet tensor indexing (#179)
ooples Oct 23, 2025
a010c55
[US-BF-017]: Complete neural network layer method implementations (#180)
ooples Oct 23, 2025
e71eb2e
[US-IF-004]: Complete ExpressionTree interface implementations (#177)
ooples Oct 23, 2025
a5a176d
[US-IF-004]: Clean up WaveletDecomposition exception handling (#181)
ooples Oct 23, 2025
3d8bb7f
[US-BF-003]: Fix AutoMLModelBase Train method exception (#171)
ooples Oct 23, 2025
64b0b07
[US-BF-009]: Implement model persistence for NonLinearRegressionBase …
ooples Oct 23, 2025
a49ff44
[US-BF-004]: Complete ActivationFunctionFactory mappings (#172)
ooples Oct 23, 2025
2dd50c2
[US-BF-018]: Complete acquisition function implementations (#175)
ooples Oct 23, 2025
2405b62
[US-BF-003]: Implement model interpretability methods (#176)
ooples Oct 23, 2025
606ee8f
fix(us-bf-021): set IsTrained flag before calling MapToTarget in Line…
ooples Oct 23, 2025
861121a
fix(us-bf-011): add missing System.IO using directive to ModelIndivid…
ooples Oct 23, 2025
36d51fb
[US-IF-008]: Implement DecoderLayer Forward pass (#167)
ooples Oct 23, 2025
d45b4b6
[US-BF-016]: Implement feature awareness in ExpressionTree (#173)
ooples Oct 23, 2025
c6db18e
fix(us-if-012): replace NotImplementedException with ArgumentOutOfRan…
ooples Oct 23, 2025
9fbee1b
[US-BF-001] Implement Model Persistence for ExpressionTree (#194)
ooples Oct 23, 2025
9f6c74e
fix: restore accidentally deleted RegressionBase.cs and OptimizerBase.cs
ooples Oct 23, 2025
8f68a38
docs: add critical file safeguards and protection documentation
ooples Oct 23, 2025
6e781b9
fix: add placeholder SaveModel/LoadModel to OptimizerBase.cs
ooples Oct 23, 2025
2ced1f6
fix: restore VectorModel.cs and PredictionModelResult.cs from dev2 br…
ooples Oct 23, 2025
26c40c8
fix: resolve merge conflict in PredictionModelResult.cs - use Newtons…
ooples Oct 23, 2025
0a6aab7
fix: remove merge conflict markers from PredictionModelResult.cs
ooples Oct 23, 2025
e442b74
fix: remove duplicate content from PredictionModelResult.cs after mer…
ooples Oct 23, 2025
734a417
fix: restore missing region markers and fix class structure in Predic…
ooples Oct 23, 2025
c55601d
fix: remove orphaned endregion marker in PredictionModelResult.cs
ooples Oct 23, 2025
e96b172
fix(us-bf-023): remove duplicate methods in OptimizationResult (#200)
ooples Oct 23, 2025
1d6e531
[US-IF-005]: Implement cross-domain transfer learning (#170)
ooples Oct 23, 2025
a29af0c
[US-BF-024] Add missing Newtonsoft.Json using statements (#195)
ooples Oct 23, 2025
2e4b696
fix(us-bf-020): correct ModelMetaData casing and interface implementa…
ooples Oct 23, 2025
d579499
fix(us-bf-022): implement IFullModel interface in VectorModel (#199)
ooples Oct 23, 2025
116b18c
[US-BF-025] Add InitializeRandomSolution method to OptimizerBase (#196)
ooples Oct 23, 2025
2a86308
fix(us-bf-012): implement IFullModel methods in PredictionModelResult…
ooples Oct 23, 2025
83a3ba8
[US-BF-016]: Implement SetParameters for ExpressionTree (#155)
ooples Oct 23, 2025
640262c
fix(us-bf-028): add model parameter to metaheuristic optimizer constr…
ooples Oct 23, 2025
cb1e33b
fix(us-bf-030): update field name references in optimizers
ooples Oct 23, 2025
5ce9966
fix(us-bf-027): add model parameter to gradient-based optimizer const…
ooples Oct 24, 2025
b2ecffb
fix(us-bf-031): add InitializeRandomSolution overload and fix optimiz…
ooples Oct 24, 2025
ef12e6a
fix: add missing model parameter to NelderMeadOptimizer constructor (…
ooples Oct 24, 2025
8b8f31f
fix(us-bf-026): rename ModelMetaData to ModelMetadata for consistent …
ooples Oct 24, 2025
5cc3e64
fix: correct parameter order in GeneticAlgorithmRegression constructo…
ooples Oct 24, 2025
9e02e8a
fix(us-bf-032): implement expressiontree setparameters with proper tr…
ooples Oct 24, 2025
059ace4
fix: address PR #209 feedback - fix constructor instance duplication …
ooples Oct 24, 2025
a3706de
Merge branch 'merge-dev2-to-master' of https://github.com/ooples/AiDo…
ooples Oct 24, 2025
b607357
fix(us-bf-029): add upperBounds parameter to InitializeRandomSolution…
ooples Oct 24, 2025
da3beb3
fix: eliminate 372 build errors - production readiness improvements (…
ooples Oct 24, 2025
0fdae03
Merge branch 'merge-dev2-to-master' of https://github.com/ooples/AiDo…
ooples Oct 24, 2025
855873c
fix(us-ci-004): refine TransferLearning cross-domain exception messag…
ooples Oct 25, 2025
34e28c4
fix(us-ci-001): implement savemodel/loadmodel for remaining 3 classes…
ooples Oct 25, 2025
7b60128
fix(us-bf-057): improve step/calculateupdate exception messages in op…
ooples Oct 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 27 additions & 0 deletions -
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## User Story / Context
- Reference: [US-XXX] (if applicable)
- Base branch: `merge-dev2-to-master`

## Summary
- What changed and why (scoped strictly to the user story / PR intent)

## Verification
- [ ] Builds succeed (scoped to changed projects)
- [ ] Unit tests pass locally
- [ ] Code coverage ≥ 90% for touched code
- [ ] Codecov upload succeeded (if token configured)
- [ ] TFM verification (net46, net6.0, net8.0) passes (if packaging)
- [ ] No unresolved Copilot comments on HEAD

## Copilot Review Loop (Outcome-Based)
Record counts before/after your last push:
- Comments on HEAD BEFORE: [N]
- Comments on HEAD AFTER (60s): [M]
- Final HEAD SHA: [sha]

## Files Modified
- [ ] List files changed (must align with scope)

## Notes
- Any follow-ups, caveats, or migration details

3 changes: 3 additions & 0 deletions .commitlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["@commitlint/config-conventional"]
}
201 changes: 201 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
# editorconfig.org

# top-most EditorConfig file
root = true

# Default settings:
# A newline ending every file
# Use 4 spaces as indentation
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

# Specify UTF-8 without byte-order mark
[*.{csproj,locproj,nativeproj,proj,resx,slnx,vbproj}]
charset = utf-8

# Generated code
[*{_AssemblyInfo.cs,.notsupported.cs,AsmOffsets.cs}]
generated_code = true

# C# files
[*.cs]
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true

# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = false
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current

# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion

# avoid this. unless absolutely necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Types: use keywords instead of BCL types, and permit var only when the type is clear
csharp_style_var_for_built_in_types = false:suggestion
csharp_style_var_when_type_is_apparent = false:none
csharp_style_var_elsewhere = false:suggestion
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# name all constant fields using PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case

# static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds = field
dotnet_naming_symbols.static_fields.required_modifiers = static
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
dotnet_naming_style.static_prefix_style.required_prefix = s_
dotnet_naming_style.static_prefix_style.capitalization = camel_case

# internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case

# Code style defaults
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:silent
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion
dotnet_style_readonly_field = true:suggestion

# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_prefer_collection_expression = when_types_exactly_match
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
csharp_prefer_simple_default_expression = true:suggestion

# Expression-bodied members
csharp_style_expression_bodied_methods = true:silent
csharp_style_expression_bodied_constructors = true:silent
csharp_style_expression_bodied_operators = true:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = true:silent

# Pattern matching
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion

# Null checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Other features
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none

# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# License header
file_header_template = Licensed to the .NET Foundation under one or more agreements.\nThe .NET Foundation licenses this file to you under the MIT license.

[src/libraries/System.Net.Http/src/System/Net/Http/{SocketsHttpHandler/Http3RequestStream.cs,BrowserHttpHandler/BrowserHttpHandler.cs}]
# disable CA2025, the analyzer throws a NullReferenceException when processing this file: https://github.com/dotnet/roslyn-analyzers/issues/7652
dotnet_diagnostic.CA2025.severity = none

# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2

# Xml build files
[*.builds]
indent_size = 2

# Xml files
[*.{resx,ruleset,slnx,stylecop,xml}]
indent_size = 2

# Xml resource files
[*.resx]
# match Visual Studio behavior
insert_final_newline = false
trim_trailing_whitespace = false

# Xml config files
[*.{props,targets,config,nuspec}]
indent_size = 2

# Data serialization
[*.{json,yaml,yml}]
indent_size = 2

# Shell scripts
[*.sh]
end_of_line = lf
[*.{cmd,bat}]
end_of_line = crlf
21 changes: 21 additions & 0 deletions .github/BRANCH_PROTECTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Branch Protection Guidance for AiDotNet

We recommend enabling branch protection on both `merge-dev2-to-master` (active base) and `master` (release) with these required status checks:

- CI (.NET) / Lint and Format Check
- CI (.NET) / Build
- CI (.NET) / Test (.NET 8.0.x)
- CI (.NET) / Integration Tests
- CI (.NET) / All Checks Passed
- Quality Gates (.NET) / Publish Size Analysis
- Commit Message Lint / commitlint

Also enable:
- Require pull request reviews (e.g., 1–2 approvals)
- Dismiss stale approvals on new commits (optional)
- Require status checks to pass before merging
- Require branches to be up to date before merging
- Require CODEOWNERS review

Note: The exact names shown in GitHub's UI may include the workflow/job prefixes. Use the exact check names shown on a PR when configuring protection rules.

4 changes: 4 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# CODEOWNERS enforces review from code owners on PRs touching matching paths.
# Adjust as needed to match your GitHub users/teams.

* @ooples
30 changes: 24 additions & 6 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
Please ensure your pull request adheres to the following guidelines:
## User Story / Context
- Reference: [US-XXX] (if applicable)
- Base branch: `merge-dev2-to-master`

- [ ] I have built my code and there are no build errors.
- [ ] I have run all unit tests and all unit tests passed.
- [ ] I have included positive flow unit tests for any method or class I added.
- [ ] I have inluded negative flow unit tests for any method or class I added.
## Summary
- What changed and why (scoped strictly to the user story / PR intent)

Thanks for contributing!
## Verification
- [ ] Builds succeed (scoped to changed projects)
- [ ] Unit tests pass locally
- [ ] Code coverage >= 90% for touched code
- [ ] Codecov upload succeeded (if token configured)
- [ ] TFM verification (net46, net6.0, net8.0) passes (if packaging)
- [ ] No unresolved Copilot comments on HEAD

## Copilot Review Loop (Outcome-Based)
Record counts before/after your last push:
- Comments on HEAD BEFORE: [N]
- Comments on HEAD AFTER (60s): [M]
- Final HEAD SHA: [sha]

## Files Modified
- [ ] List files changed (must align with scope)

## Notes
- Any follow-ups, caveats, or migration details
2 changes: 2 additions & 0 deletions .github/WORKFLOW_SECRETS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Workflow Secrets for AiDotNet CI/CD Set these GitHub repository secrets (Settings → Secrets and variables → Actions → New repository secret): - `CODECOV_TOKEN`: Codecov upload token - Used by: `.github/workflows/ci.yml` (coverage upload) - `NUGET_API_KEY`: NuGet API key for publishing packages - Used by: `.github/workflows/release.yml` (publish to NuGet) Important: - Do NOT commit secrets to the repository. - These secrets may be shared across multiple repos; after rollout here, update other repos to ensure consistency. - If rotating keys, update all dependent repos’ secrets simultaneously to avoid broken pipelines. #

42 changes: 35 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,39 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
- package-ecosystem: "nuget" # See documentation for possible values
directory: "/" # Location of package manifests
# NuGet package updates
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
open-pull-requests-limit: 10
reviewers:
- "ooples"
labels:
- "dependencies"
- "nuget"
commit-message:
prefix: "deps"
include: "scope"
ignore:
# Ignore major version updates for stable packages
- dependency-name: "*"
update-types: ["version-update:semver-major"]

# GitHub Actions updates
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
open-pull-requests-limit: 5
reviewers:
- "ooples"
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
include: "scope"
Loading
Loading