Conversation
|
Warning Rate limit exceeded@DaveSkender has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 15 minutes and 16 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughReplaces the previous deploy-package workflow with two new workflows (CI and NuGet.org), centralizes branch-aware GitVersion configuration, and changes version outputs by context (CI: FullSemVer with metadata; manual previews: NuGetVersionV2; production: MajorMinorPatch). Removes dynamic pre-release suffix computation and associated debug steps, tightens deployment validation and branch constraints, and rewrites package cleanup from a shell/gh approach to a Node-based GitHub Script that lists package versions, retains recent releases, and deletes older ones. Also updates src/gitversion.yml and docs/contributing.md to document the branch-centric versioning model. Possibly related PRs
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package.yml:
- Around line 387-388: The retention settings in the cleanup job are
inconsistent with docs; change the constants used by the cleanup step
(retentionDays and keepCount) to match docs/contributing.md (use retentionDays =
3 and keepCount = 5) or update the docs to match the current values; update
either the constants named retentionDays and keepCount in the workflow or change
the documentation line in docs/contributing.md (around the "auto-cleanup after"
text) so both reflect the same retention policy.
In @docs/contributing.md:
- Around line 247-251: The documentation under the "Automatic CI builds" section
is inconsistent with the workflow implementation: update the bullet that
currently reads "Old CI packages auto-cleanup after 3 days (keeps 5 most
recent)" to reflect the actual settings used by the workflow — change it to "Old
CI packages auto-cleanup after 90 days (keeps 10 most recent)" so the docs match
the implementation.
🧹 Nitpick comments (1)
.github/workflows/deploy-package.yml (1)
106-120: Redundant validation checks can be consolidated.Lines 106-112 and 114-120 perform overlapping checks for the same condition (non-preview versions to nuget.org from non-main branch). The first check (106-112) already catches this case, making the second check (114-120) redundant.
♻️ Suggested simplification
- # Non-preview versions to nuget.org must be from main or release branches - if [[ "$INPUT_PREVIEW" == "false" ]] && [[ "$GITHUB_REF" != "refs/heads/main" ]]; then - echo "::error::Stable versions (preview=false) can only be deployed from main branch" - echo "::error::Current branch: $GITHUB_REF" - echo "::error::Options: 1) Switch to main, or 2) Set preview=true for pre-release" - exit 1 - fi - - # Non-preview (production) versions are only allowed from main branch - if [[ "$GITHUB_REF" != "refs/heads/main" ]] && [[ "$INPUT_PREVIEW" != "true" ]]; then - echo "::error::Non-preview (production) versions to nuget.org are only allowed from main branch" - echo "::error::Current branch: $GITHUB_REF" - echo "::error::From v* branches, you must set preview=true" - exit 1 - fi + # Non-preview (production) versions to nuget.org must be from main branch only + if [[ "$INPUT_PREVIEW" == "false" ]] && [[ "$GITHUB_REF" != "refs/heads/main" ]]; then + echo "::error::Stable versions (preview=false) can only be deployed from main branch" + echo "::error::Current branch: $GITHUB_REF" + echo "::error::Options: 1) Switch to main, or 2) Set preview=true for pre-release" + exit 1 + fi
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/workflows/deploy-package.ymldocs/contributing.mdsrc/gitversion.yml
🧰 Additional context used
📓 Path-based instructions (9)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package.yml
docs/**/*.md
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.md: Follow markdown linting rules in the.github/instructions/markdown.instructions.mdfile
Ensure YAML front matter follows documented schema
Include required YAML front matter for all documentation pages
Use consistent layout references in Jekyll front matter
Set appropriate page titles and descriptions in Jekyll front matter
Include navigation metadata in front matter when applicable
Document version-specific features appropriately
Provide migration guidance for breaking changes in documentation
Files:
docs/contributing.md
⚙️ CodeRabbit configuration file
docs/**/*.md: Check for:
- Accuracy: Ensure content matches current implementation
- Completeness: Verify examples, parameters, and return values are documented
- Accessibility: Flag missing alt text, poor heading hierarchy
- Link validity: Check for broken internal/external links
- Mathematical formulas: Verify calculation descriptions are correct
Files:
docs/contributing.md
docs/**/*.{html,md}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Use semantic HTML elements when HTML is required
Files:
docs/contributing.md
docs/**/*.{md,html}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,html}: Provide alt text for all images
Ensure proper heading hierarchy with no skipping levels
Include descriptive link text and avoid 'click here' phrases
Verify all internal and external links work in documentation
Check for typos and formatting consistency in documentation changes
Maintain accuracy of mathematical formulas and calculations in documentation
Clearly mark deprecated features in documentation
Files:
docs/contributing.md
docs/**
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Build Jekyll documentation without errors before committing changes
Files:
docs/contributing.md
docs/**/*.{md,yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,yml,yaml}: Update examples and documentation when API changes occur
Maintain backward compatibility in examples where possible
Files:
docs/contributing.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Markdown: Run
npx markdownlint-cli2for linting andnpx markdownlint-cli2 --fixfor auto-fixing
Files:
docs/contributing.md
**/*.{md,markdown,.markdownlint*}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown,.markdownlint*}: Runnpx markdownlint-cli2 --no-globs {filepath} --fixto auto-fix Markdown linting issues, always using--no-globswith explicit file paths to prevent unintended glob expansion
Runnpx markdownlint-cli2 --no-globs {filepath}to verify zero linting errors after manual fixes
Files:
docs/contributing.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown}: Never bypass lint warnings; resolve or add narrow suppressions with<!-- markdownlint-disable MD### -->...<!-- markdownlint-enable MD### -->
Convert title case in headers to sentence case: 'How To Use' → 'How to use'
Convert title case in bold labels to sentence case: 'Next Steps:' → 'Next steps:'
Replace asterisk bullets (*,+) with hyphens (-)
Convert Setext headers (===,---) to ATX headers (#,##)
Add blank lines before and after headers
Add blank lines before and after code block fences
Remove backticks in#file:references: use#file:pathnot`#file:path`
Remove trailing punctuation after#file:references or add space
Add language identifier to all fenced code blocks (useplaintextwhen language is unknown)
Increase outer fence length for nested code blocks to be greater than inner fence length
Convert ordered lists for non-sequential items to unordered hyphen lists
Use present tense and imperative mood in Markdown prose: 'Run the command' not 'You should run'
Use sentence case only for headers (capitalize first word + proper nouns, lowercase articles, prepositions, conjunctions)
Use ATX-style headers only (#,##,###); never use Setext style (===,---)
Maintain sequential header hierarchy without skipping levels:#→##→###
Always use hyphens (-) for bullet points; never asterisks (*) or plus signs (+)
Indent nested lists with exactly two spaces
Use ordered lists (1., 2., 3.) only when sequence matters
Use sentence case for bold labels that start list items
Always use fenced code blocks (); never use indented code blocks
Do not wrap#file:or#folder:context tokens in backticks
Do not place punctuation immediately after#file:or#folder:tokens
Never usefile:URI scheme (e.g.,file:///path/to/doc.md) as these always force auto-loading
Use standard Markdown links for URLs only, not for local workspace files
Use#tool:syntax only for VS Code Copilot Cha...
Files:
docs/contributing.md
🧠 Learnings (9)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package.yml
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Document version-specific features appropriately
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Provide migration guidance for breaking changes in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-01T06:10:39.665Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/AGENTS.md:0-0
Timestamp: 2026-01-01T06:10:39.665Z
Learning: Applies to src/**/MigrationGuide.V3.md : Update `MigrationGuide.V3.md` with migration notes and bridges when behavior changes
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-24T07:46:46.923Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1771
File: .github/instructions/indicator-buffer.instructions.md:321-321
Timestamp: 2025-12-24T07:46:46.923Z
Learning: "Last updated" dates in instruction files (.github/instructions/*.md) should only be updated for meaningful content changes to the guidance itself, not for administrative changes like path updates, link corrections, or file reorganization.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-02T02:01:48.007Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1384
File: tests/indicators/s-z/Tsi/Tsi.Tests.cs:14-14
Timestamp: 2025-09-02T02:01:48.007Z
Learning: The Stock.Indicators repository uses centralized package management via tests\Directory.Packages.props to define MSTest package versions across all test projects, currently using MSTest.TestAdapter and MSTest.TestFramework version 3.10.3.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-30T22:14:21.695Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1446
File: .github/workflows/test-integration.yml:3-8
Timestamp: 2025-09-30T22:14:21.695Z
Learning: For the Stock.Indicators repository, integration tests in `.github/workflows/test-integration.yml` are intentionally not run on pull requests when the test suite is minimal (e.g., only one test). The maintainer prefers to add the pull_request trigger back when integration tests become more prevalent. This is a library package not expected to have extensive integration testing.
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-06T06:43:47.544Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1880
File: docs/indicators/Beta.md:69-69
Timestamp: 2026-01-06T06:43:47.544Z
Learning: The repository's docs/.markdownlint-cli2.jsonc config permits the listed HTML elements for MD033 in Markdown files. For any Markdown under docs (e.g., docs/indicators/Beta.md), verify that any HTML elements used are within the allowed list. If an element is used that's not in the allowed list, flag it for removal or adjust the config accordingly.
Applied to files:
docs/contributing.md
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (13)
src/gitversion.yml (4)
36-45: LGTM!The release branch configuration correctly targets v3+ branches with the preview label. The regex
^v([3-9]|[1-9]\d+)$properly matches v3 through v9 and v10+ (double-digit and higher versions).
47-52: LGTM!Feature branch configuration correctly allows branching from main, release, and support branches, with dynamic labeling based on the branch name.
54-62: LGTM!The pull-request and unknown branch configurations use appropriate defaults with fixed 'pr' label for PRs and dynamic branch name labeling for unknown branches.
26-34: The original concern aboutis-main-branch: trueon the support branch is inaccurate. GitVersion explicitly supports multiple branches marked as main branches (is-main-branch: true), and this is the intended configuration pattern for handling both primary development and maintenance branches. Mainline versioning strategies apply to all branches configured withis-main-branch: true, so no conflict or ambiguity occurs. The configuration as written is correct and requires no changes.Likely an incorrect or invalid review comment.
.github/workflows/deploy-package.yml (5)
3-31: LGTM!The version taxonomy documentation is comprehensive and clearly explains the versioning behavior for different scenarios. This serves as excellent documentation for maintainers.
183-209: LGTM!The version composition logic correctly selects the appropriate GitVersion output based on the deployment scenario:
FullSemVerfor CI builds (includes metadata)NuGetVersionV2for manual preview releasesMajorMinorPatchfor production releases
394-407: LGTM!The cleanup implementation correctly uses the user-owned package API for this repository structure. The sorting by creation date and retention logic is sound.
456-467: LGTM!The summary table generation provides clear visibility into cleanup actions and is well-structured using the Actions summary API.
308-312: Version mismatch is not an issue. The workflow usesactions/upload-artifact@v6andactions/download-artifact@v5, which are fully compatible. Both v5 and v6 of download-artifact are part of the v4+ artifact backend and work seamlessly with upload-artifact@v6. No action needed.Likely an incorrect or invalid review comment.
docs/contributing.md (4)
195-206: LGTM!The versioning table clearly documents the semantic version components with accurate descriptions and commit message guidance.
208-227: LGTM!The branch-based versioning documentation accurately reflects the GitVersion configuration and provides clear examples for controlling version increments.
229-241: LGTM!Clear instructions for creating preview releases from stable branches with practical Git commands and explanation of how GitVersion handles tag suffixes.
262-275: LGTM!The version examples table provides comprehensive coverage of different versioning scenarios, and the links to configuration files are helpful for reference.
Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 13
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 221-233: The workflow step name "Publish package to GitHub
Packages to GitHub Packages" contains a duplicated phrase; update the step name
in the job definition (the step whose name field currently reads "Publish
package to GitHub Packages to GitHub Packages") to a single correct label such
as "Publish package to GitHub Packages" so the step title is not duplicated.
- Around line 235-239: The step "CI package published" uses a boolean negation
on the string env.dry_run (if: ${{ !env.dry_run }}), which mis-evaluates when
env.dry_run is the string "false"; change the condition to compare strings
explicitly, e.g. replace the if with if: ${{ env.dry_run != 'true' }} (or if:
${{ env.dry_run == 'false' }}) so the step runs only when dry_run is not set to
the string "true".
- Around line 52-68: The workflow contains orphaned/malformed shell fragments
(standalone "exit 1", stray "fi" tokens and an incomplete conditional block that
echoes "Non-preview (production) versions..." / checks "$GITHUB_REF" and
"$INPUT_PREVIEW") inside the "Validate CI deployment" step; remove those stray
lines or consolidate them into a single valid run script block so the step
contains only a valid shell script (either delete the orphaned "exit 1" and all
stray "fi" and conditional lines, or rewrite the whole conditional into a proper
bash run: | block) ensuring no unmatched fi/exit statements remain.
- Around line 174-194: The summary step references
steps.settings.outputs.is_ci_push which is never defined; update the settings
step (the step named "settings") to emit an output named is_ci_push (true/false)
based on your CI push detection logic (or alternatively change the Summary
output to use an existing defined output), then reference that defined output in
the Summary output step; ensure the settings step writes the output using the
GitHub Actions outputs mechanism so steps.settings.outputs.is_ci_push is
available to the Summary output.
- Around line 119-133: The Compose CI version step (id: version_info)
incorrectly reads MAJORMINORPATCH from steps.gitversion.outputs.majorMinorPatch
which is not set; change the env reference to use the variable exported to
GitHub Actions environment (read MAJORMINORPATCH from the environment/GITHUB_ENV
rather than steps.gitversion.outputs), i.e., remove the
steps.gitversion.outputs.majorMinorPatch reference and rely on the
MAJORMINORPATCH env provided by the previous GitVersion step so the
ver="${base}-ci-${run}" calculation receives the actual majorMinorPatch value.
- Around line 96-102: The workflow's Setup .NET SDK step
(actions/setup-dotnet@v5) uses caching but points to non-existent lock files via
the cache-dependency-path key ("**/packages.lock.json"), so fix it by either
generating those lock files in your projects (run dotnet restore --use-lock-file
for each relevant project so packages.lock.json exists) and keep cache: true, or
remove/disable caching lines (remove cache: true and cache-dependency-path) from
that step if you don't intend to use lock files; update the
cache-dependency-path value only if you have a different known lock file path to
reference.
In @.github/workflows/deploy-package-nuget.yml:
- Around line 158-162: The workflow uses actions/upload-artifact@v6 but the
"Download package" step still references actions/download-artifact@v5, causing a
version mismatch; update the "Download package" step to use
actions/download-artifact@v6 (the same major version as the upload) so the
upload/download actions are aligned and compatible, locating the step by its
name "Download package" and the actions/download-artifact reference.
- Around line 179-184: The workflow uses inconsistent checks for the env
variable dry_run (string) — replace the boolean negation `${{ !env.dry_run }}`
used in the "Production package published" step with the string comparison `${{
env.dry_run != 'true' }}` so both conditions consistently treat dry_run as a
string; locate the step named "Production package published" and update its if
expression to `${{ env.dry_run != 'true' }}`.
- Around line 74-79: The Compose package info step uses xmllint to extract
PACKAGE_NAME but doesn't handle xmllint failures or empty results; update the
package_info step to check xmllint's exit status and/or validate that
PACKAGE_NAME is non-empty after the xmllint call, and if it fails, emit a clear
error message (including the raw xmllint output or the project file path and
XPath) and exit with a non-zero status to stop the workflow, or optionally set a
safe fallback value; make sure to keep references to PACKAGE_NAME, the xmllint
--xpath invocation, and the url line that uses
steps.version_info.outputs.version so downstream outputs are only written when
PACKAGE_NAME is valid.
In @docs/contributing.md:
- Line 273: The docs reference points to a non-existent workflow file; update
the documented workflow name `.github/workflows/deploy-production.yml` to the
correct file `.github/workflows/deploy-package-nuget.yml` in the contributing
documentation (change the mention in the contributing.md entry that lists
Workflow: `.github/workflows/deploy-production.yml` so it matches the actual
NuGet deployment workflow name).
- Around line 247-258: The "CI Package Deploy (Automatic)" docs line says
"Auto-cleanup after 90 days (keeps 5 most recent)" but the workflow uses
keepCount = 10; update that sentence to "Auto-cleanup after 90 days (keeps 10
most recent)" in the CI Package Deploy (Automatic) section so the documentation
matches the deploy-package-github.yml setting (keepCount = 10).
- Around line 294-298: Update the three broken links in the docs: replace the CI
workflow link that points to `.github/workflows/deploy-package.yml` with the
actual files `.github/workflows/deploy-package-github.yml` or
`.github/workflows/deploy-package-nuget.yml` as appropriate, and replace the
production workflow link `.github/workflows/deploy-production.yml` with
`.github/workflows/deploy-website.yml`; ensure the text still references "CI
workflow" and "Production workflow" while updating the target filenames in the
referenced links.
🧹 Nitpick comments (1)
.github/workflows/deploy-package-nuget.yml (1)
185-190: Incomplete deployment summary table.The summary table only has one row and lacks proper table headers, making it inconsistent with the package job summary (lines 118-126).
📊 Suggested enhanced summary
- name: Deployment summary if: always() run: | + MODE="🚀 DEPLOYED" + if [[ "${{ env.dry_run }}" == "true" ]]; then + MODE="🔍 DRY RUN (skipped)" + fi + { - echo "| Version | ${{ env.version }} |" + echo "| Component | Value |" + echo "| ----------------- | ------------------------------------------------ |" + echo "| **Mode** | $MODE |" + echo "| Package Version | ${{ env.version }} |" + echo "| Package Name | ${{ env.name }} |" + echo "| Package URL | ${{ env.url }} |" } >> $GITHUB_STEP_SUMMARY
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.ymldocs/contributing.md
🧰 Additional context used
📓 Path-based instructions (9)
docs/**/*.md
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.md: Follow markdown linting rules in the.github/instructions/markdown.instructions.mdfile
Ensure YAML front matter follows documented schema
Include required YAML front matter for all documentation pages
Use consistent layout references in Jekyll front matter
Set appropriate page titles and descriptions in Jekyll front matter
Include navigation metadata in front matter when applicable
Document version-specific features appropriately
Provide migration guidance for breaking changes in documentation
Files:
docs/contributing.md
⚙️ CodeRabbit configuration file
docs/**/*.md: Check for:
- Accuracy: Ensure content matches current implementation
- Completeness: Verify examples, parameters, and return values are documented
- Accessibility: Flag missing alt text, poor heading hierarchy
- Link validity: Check for broken internal/external links
- Mathematical formulas: Verify calculation descriptions are correct
Files:
docs/contributing.md
docs/**/*.{html,md}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Use semantic HTML elements when HTML is required
Files:
docs/contributing.md
docs/**/*.{md,html}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,html}: Provide alt text for all images
Ensure proper heading hierarchy with no skipping levels
Include descriptive link text and avoid 'click here' phrases
Verify all internal and external links work in documentation
Check for typos and formatting consistency in documentation changes
Maintain accuracy of mathematical formulas and calculations in documentation
Clearly mark deprecated features in documentation
Files:
docs/contributing.md
docs/**
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Build Jekyll documentation without errors before committing changes
Files:
docs/contributing.md
docs/**/*.{md,yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,yml,yaml}: Update examples and documentation when API changes occur
Maintain backward compatibility in examples where possible
Files:
docs/contributing.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Markdown: Run
npx markdownlint-cli2for linting andnpx markdownlint-cli2 --fixfor auto-fixing
Files:
docs/contributing.md
**/*.{md,markdown,.markdownlint*}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown,.markdownlint*}: Runnpx markdownlint-cli2 --no-globs {filepath} --fixto auto-fix Markdown linting issues, always using--no-globswith explicit file paths to prevent unintended glob expansion
Runnpx markdownlint-cli2 --no-globs {filepath}to verify zero linting errors after manual fixes
Files:
docs/contributing.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown}: Never bypass lint warnings; resolve or add narrow suppressions with<!-- markdownlint-disable MD### -->...<!-- markdownlint-enable MD### -->
Convert title case in headers to sentence case: 'How To Use' → 'How to use'
Convert title case in bold labels to sentence case: 'Next Steps:' → 'Next steps:'
Replace asterisk bullets (*,+) with hyphens (-)
Convert Setext headers (===,---) to ATX headers (#,##)
Add blank lines before and after headers
Add blank lines before and after code block fences
Remove backticks in#file:references: use#file:pathnot`#file:path`
Remove trailing punctuation after#file:references or add space
Add language identifier to all fenced code blocks (useplaintextwhen language is unknown)
Increase outer fence length for nested code blocks to be greater than inner fence length
Convert ordered lists for non-sequential items to unordered hyphen lists
Use present tense and imperative mood in Markdown prose: 'Run the command' not 'You should run'
Use sentence case only for headers (capitalize first word + proper nouns, lowercase articles, prepositions, conjunctions)
Use ATX-style headers only (#,##,###); never use Setext style (===,---)
Maintain sequential header hierarchy without skipping levels:#→##→###
Always use hyphens (-) for bullet points; never asterisks (*) or plus signs (+)
Indent nested lists with exactly two spaces
Use ordered lists (1., 2., 3.) only when sequence matters
Use sentence case for bold labels that start list items
Always use fenced code blocks (); never use indented code blocks
Do not wrap#file:or#folder:context tokens in backticks
Do not place punctuation immediately after#file:or#folder:tokens
Never usefile:URI scheme (e.g.,file:///path/to/doc.md) as these always force auto-loading
Use standard Markdown links for URLs only, not for local workspace files
Use#tool:syntax only for VS Code Copilot Cha...
Files:
docs/contributing.md
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
🧠 Learnings (9)
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Document version-specific features appropriately
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Provide migration guidance for breaking changes in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-01T06:10:39.665Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/AGENTS.md:0-0
Timestamp: 2026-01-01T06:10:39.665Z
Learning: Applies to src/**/MigrationGuide.V3.md : Update `MigrationGuide.V3.md` with migration notes and bridges when behavior changes
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Ensure documentation site builds successfully in the CI/CD pipeline
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-02T02:01:48.007Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1384
File: tests/indicators/s-z/Tsi/Tsi.Tests.cs:14-14
Timestamp: 2025-09-02T02:01:48.007Z
Learning: The Stock.Indicators repository uses centralized package management via tests\Directory.Packages.props to define MSTest package versions across all test projects, currently using MSTest.TestAdapter and MSTest.TestFramework version 3.10.3.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-30T22:14:21.695Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1446
File: .github/workflows/test-integration.yml:3-8
Timestamp: 2025-09-30T22:14:21.695Z
Learning: For the Stock.Indicators repository, integration tests in `.github/workflows/test-integration.yml` are intentionally not run on pull requests when the test suite is minimal (e.g., only one test). The maintainer prefers to add the pull_request trigger back when integration tests become more prevalent. This is a library package not expected to have extensive integration testing.
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-06T06:43:47.544Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1880
File: docs/indicators/Beta.md:69-69
Timestamp: 2026-01-06T06:43:47.544Z
Learning: The repository's docs/.markdownlint-cli2.jsonc config permits the listed HTML elements for MD033 in Markdown files. For any Markdown under docs (e.g., docs/indicators/Beta.md), verify that any HTML elements used are within the allowed list. If an element is used that's not in the allowed list, flag it for removal or adjust the config accordingly.
Applied to files:
docs/contributing.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (8)
docs/contributing.md (2)
197-227: Well-documented versioning strategy.The branch-based versioning documentation is clear and provides concrete examples. The semver control via commit messages is well explained.
229-241: Preview release workflow is clearly documented.The instructions for creating preview releases from stable branches are actionable with concrete commands.
.github/workflows/deploy-package-nuget.yml (5)
18-20: Consider limiting release event types.The workflow triggers on both
publishedandcreatedevents. Thecreatedtype fires when a draft release is created, which then triggers dry-run mode. This is intentional based on the comments, but note thatcreatedalso fires for non-draft releases. This could potentially cause duplicate runs if a release is created and then immediately published.Consider if you want only
publishedevents for actual deployments, using draft releases purely for testing builds viaworkflow_dispatchinstead.
41-42: > Likely an incorrect or invalid review comment.
102-108: No action needed.actions/upload-artifact@v6is the current official version and is available.
34-36: No action needed.actions/checkout@v6is the current latest stable version and is recommended for use. There is no issue with this version pin.Likely an incorrect or invalid review comment.
164-170: Clarify OIDC configuration requirements and verify external setup.The workflow is properly configured with
id-token: writepermission. However, clarify that theNUGET_USERsecret should contain your nuget.org profile name (not an OIDC audience value). Ensure your nuget.org Trusted Publishing policy is configured to accept OIDC tokens from this repository and workflow—the OIDC audience setup is external to this workflow..github/workflows/deploy-package-github.yml (1)
261-353: Cleanup job implementation is well-structured.The GitHub Script approach for package cleanup is clean and readable. The logic properly:
- Sorts versions by creation date
- Keeps N most recent regardless of age
- Deletes versions older than retention period
- Handles errors gracefully with
continue-on-error- Provides detailed logging and summary
Likely an incorrect or invalid review comment.
Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 52-53: The workflow installs the GitVersion Tool twice via the
step named "Setup GitVersion Tool" which runs `dotnet tool install --global
GitVersion.Tool`; remove the duplicate step (the earlier one at startLine 52–53)
so only the grouped installation later (lines ~83–86) remains, ensuring the
single installation uses the existing grouped dependencies block and keeping the
step name/command references consistent.
- Around line 209-216: Rename the workflow step currently named "Publish package
to GitHub Packages to GitHub Packages" to remove the duplicated phrase (e.g.,
"Publish package to GitHub Packages"); update the step's name string so it reads
correctly and leave the rest of the step (the dotnet nuget push command and
condition) unchanged.
- Around line 98-113: The step "Compose CI version" is incorrectly trying to
read GitVersion output via steps.gitversion.outputs.majorMinorPatch; remove the
env block and instead read the environment variable that GitVersion exported
(MajorMinorPatch) by referencing it as $MAJORMINORPATCH in the script (ensure
the variable name uses PascalCase as exported), so delete the env:
MAJORMINORPATCH: ${{ steps.gitversion.outputs.majorMinorPatch }} and rely on the
existing $MAJORMINORPATCH in the run block to generate ver.
- Around line 209-222: The two GitHub Actions steps ("Publish package to GitHub
Packages to GitHub Packages" and "CI package published") use inconsistent checks
for dry_run: one uses string comparison (env.dry_run != 'true') and the other
uses boolean negation (!env.dry_run); change the latter to the same string
comparison (replace !env.dry_run with env.dry_run != 'true') so both steps
consistently treat dry_run as a string "true"/"false".
- Around line 153-173: The summary step references
steps.settings.outputs.is_ci_push which is never emitted by the "Set workflow
mode" step; fix by either removing the is_ci_push condition from the summary
block (only use steps.settings.outputs.dry_run or another existing output) or
update the "Set workflow mode" step to set an outputs.is_ci_push value (e.g.,
compute and echo "::set-output name=is_ci_push::true/false" or use outputs via a
composite/action) so steps.settings.outputs.is_ci_push is defined and the MODE
logic in the summary can evaluate correctly.
🧹 Nitpick comments (1)
.github/workflows/deploy-package-github.yml (1)
34-37: Consider reducingcontentspermission toread.The workflow only checks out code and doesn't modify repository contents. Using
contents: readinstead ofcontents: writefollows the principle of least privilege.♻️ Proposed fix
permissions: - contents: write + contents: read packages: write
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/deploy-package-github.yml
🧰 Additional context used
📓 Path-based instructions (1)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml
🧠 Learnings (2)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: linting (full)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (1)
.github/workflows/deploy-package-github.yml (1)
230-335: LGTM! Cleanup logic is well-implemented.The cleanup job properly:
- Sorts versions by creation date (newest first)
- Keeps the 10 most recent versions regardless of age
- Deletes versions older than 90 days
- Has appropriate error handling with try-catch blocks and
continue-on-error- Logs detailed information for debugging
- Generates a summary table
The retention policy (90 days, keep 10) is reasonable for CI builds.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
Signed-off-by: Dave Skender <[email protected]>
Signed-off-by: Dave Skender <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
Removed the auto-cleanup policy for GitHub Packages. Signed-off-by: Dave Skender <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 34-37: The workflow grants overly broad repo write access; change
the global permissions block so "contents: write" becomes "contents: read" and
keep "packages: write" only where required (move or add "packages: write" to the
specific deploy/cleanup jobs that publish packages); update the other
occurrences that mirror the same permissions (the blocks referenced in the
comment) to the same pattern so only deploy/cleanup jobs have packages write and
the global scope remains contents: read.
- Around line 52-54: Move the GitVersion.Tool installation so it runs once after
the "Setup .NET SDK" step and remove the earlier duplicate; pin the install to
the stable version by using dotnet tool install --global GitVersion.Tool
--version 6.5.1 (ensure the step name remains "Setup GitVersion Tool" and delete
the other GitVersion.Tool install step later in the workflow).
In @.github/workflows/deploy-package-nuget.yml:
- Around line 183-187: Update the step named "Production package published" to
use the same correct conditional form as the other steps: replace the faulty if
condition `${{ !env.dry_run }}` with `if: ${{ env.dry_run != 'true' }}` so the
step only runs when dry_run is not set to 'true'.
In @docs/contributing.md:
- Line 213: The example string `2.7.1-ci.3+5` is inconsistent with the
documented pattern `{Major}.{Minor}.{Patch}-ci-{run_number}` and the table
examples like `2.7.2-ci-1234`; either change the example to use the dash form
(e.g., `2.7.1-ci-3`) or explicitly state that an optional build metadata suffix
(`+<build>`) may be appended (e.g., `2.7.1-ci-3+5`) and update the surrounding
text to clarify that `-ci-<run_number>` is the canonical form while `+<build>`
is optional metadata.
- Around line 295-297: Update the broken workflow links in the docs: replace
references to `.github/workflows/deploy-package.yml` with the actual files
`deploy-package-github.yml` and/or `deploy-package-nuget.yml` (choose the
appropriate one for the context) and replace
`.github/workflows/deploy-production.yml` with `deploy-website.yml`, ensuring
the markdown bullet list entries (the lines referencing `deploy-package` and
`deploy-production`) point to the correct repository URLs; keep the
`src/gitversion.yml` entry unchanged.
🧹 Nitpick comments (3)
.github/workflows/deploy-package-nuget.yml (2)
189-194: Enhance deployment summary with additional context.The deployment summary only shows the version, while the package job summary (lines 114-130) provides comprehensive information including mode, package URL, and target. Consider adding similar details to the deployment summary for better observability and debugging.
♻️ Proposed enhancement for deployment summary
- name: Deployment summary if: always() run: | + MODE="🚀 PRODUCTION DEPLOY" + if [[ "${{ env.dry_run }}" == "true" ]]; then + MODE="🔍 DRY RUN (Draft Release)" + fi + { + echo "| Component | Value |" + echo "| ----------------- | ------------------------------------------------ |" + echo "| **Mode** | $MODE |" echo "| Version | ${{ env.version }} |" + echo "| Package Name | ${{ env.name }} |" + echo "| Package URL | ${{ env.url }} |" } >> $GITHUB_STEP_SUMMARY
143-146: Remove redundant permissions declaration.The deploy job redeclares permissions that are already defined at the workflow level (lines 22-26). This is redundant and can be removed unless you need different permissions for this specific job.
♻️ Proposed cleanup
deploy: needs: package runs-on: ubuntu-latest if: success() - permissions: - contents: write - packages: write - id-token: write - env: version: ${{ needs.package.outputs.version }}.github/workflows/deploy-package-github.yml (1)
112-118: Limit find/replace scope to avoid unintended edits.
jacobtomlinson/gha-find-replacecan operate broadly; if the marker ever appears in unintended files, this could rewrite more than expected. Consider restricting it to the specific project/props files that contain#{PACKAGE_VERSION}#.Example diff (adjust paths as appropriate)
- name: Replace "dumb" version markers uses: jacobtomlinson/gha-find-replace@v3 with: find: "#{PACKAGE_VERSION}#" replace: "${{ steps.version_info.outputs.version }}" regex: false + include: "src/**"
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.ymldocs/contributing.md
🧰 Additional context used
📓 Path-based instructions (9)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
docs/**/*.md
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.md: Follow markdown linting rules in the.github/instructions/markdown.instructions.mdfile
Ensure YAML front matter follows documented schema
Include required YAML front matter for all documentation pages
Use consistent layout references in Jekyll front matter
Set appropriate page titles and descriptions in Jekyll front matter
Include navigation metadata in front matter when applicable
Document version-specific features appropriately
Provide migration guidance for breaking changes in documentation
Files:
docs/contributing.md
⚙️ CodeRabbit configuration file
docs/**/*.md: Check for:
- Accuracy: Ensure content matches current implementation
- Completeness: Verify examples, parameters, and return values are documented
- Accessibility: Flag missing alt text, poor heading hierarchy
- Link validity: Check for broken internal/external links
- Mathematical formulas: Verify calculation descriptions are correct
Files:
docs/contributing.md
docs/**/*.{html,md}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Use semantic HTML elements when HTML is required
Files:
docs/contributing.md
docs/**/*.{md,html}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,html}: Provide alt text for all images
Ensure proper heading hierarchy with no skipping levels
Include descriptive link text and avoid 'click here' phrases
Verify all internal and external links work in documentation
Check for typos and formatting consistency in documentation changes
Maintain accuracy of mathematical formulas and calculations in documentation
Clearly mark deprecated features in documentation
Files:
docs/contributing.md
docs/**
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Build Jekyll documentation without errors before committing changes
Files:
docs/contributing.md
docs/**/*.{md,yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,yml,yaml}: Update examples and documentation when API changes occur
Maintain backward compatibility in examples where possible
Files:
docs/contributing.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Markdown: Run
npx markdownlint-cli2for linting andnpx markdownlint-cli2 --fixfor auto-fixing
Files:
docs/contributing.md
**/*.{md,markdown,.markdownlint*}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown,.markdownlint*}: Runnpx markdownlint-cli2 --no-globs {filepath} --fixto auto-fix Markdown linting issues, always using--no-globswith explicit file paths to prevent unintended glob expansion
Runnpx markdownlint-cli2 --no-globs {filepath}to verify zero linting errors after manual fixes
Files:
docs/contributing.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown}: Never bypass lint warnings; resolve or add narrow suppressions with<!-- markdownlint-disable MD### -->...<!-- markdownlint-enable MD### -->
Convert title case in headers to sentence case: 'How To Use' → 'How to use'
Convert title case in bold labels to sentence case: 'Next Steps:' → 'Next steps:'
Replace asterisk bullets (*,+) with hyphens (-)
Convert Setext headers (===,---) to ATX headers (#,##)
Add blank lines before and after headers
Add blank lines before and after code block fences
Remove backticks in#file:references: use#file:pathnot`#file:path`
Remove trailing punctuation after#file:references or add space
Add language identifier to all fenced code blocks (useplaintextwhen language is unknown)
Increase outer fence length for nested code blocks to be greater than inner fence length
Convert ordered lists for non-sequential items to unordered hyphen lists
Use present tense and imperative mood in Markdown prose: 'Run the command' not 'You should run'
Use sentence case only for headers (capitalize first word + proper nouns, lowercase articles, prepositions, conjunctions)
Use ATX-style headers only (#,##,###); never use Setext style (===,---)
Maintain sequential header hierarchy without skipping levels:#→##→###
Always use hyphens (-) for bullet points; never asterisks (*) or plus signs (+)
Indent nested lists with exactly two spaces
Use ordered lists (1., 2., 3.) only when sequence matters
Use sentence case for bold labels that start list items
Always use fenced code blocks (); never use indented code blocks
Do not wrap#file:or#folder:context tokens in backticks
Do not place punctuation immediately after#file:or#folder:tokens
Never usefile:URI scheme (e.g.,file:///path/to/doc.md) as these always force auto-loading
Use standard Markdown links for URLs only, not for local workspace files
Use#tool:syntax only for VS Code Copilot Cha...
Files:
docs/contributing.md
🧠 Learnings (20)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Document version-specific features appropriately
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-01T06:10:39.665Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/AGENTS.md:0-0
Timestamp: 2026-01-01T06:10:39.665Z
Learning: Applies to src/**/MigrationGuide.V3.md : Update `MigrationGuide.V3.md` with migration notes and bridges when behavior changes
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Provide migration guidance for breaking changes in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-24T07:46:46.923Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1771
File: .github/instructions/indicator-buffer.instructions.md:321-321
Timestamp: 2025-12-24T07:46:46.923Z
Learning: "Last updated" dates in instruction files (.github/instructions/*.md) should only be updated for meaningful content changes to the guidance itself, not for administrative changes like path updates, link corrections, or file reorganization.
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Ensure documentation site builds successfully in the CI/CD pipeline
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Verify all internal and external links work in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Applies to {AGENTS.md,**/instructions/*.md,*.instructions.md} : Replace `#file:` references with plain-text path mentions in entry point files (AGENTS.md, root instruction files) to prevent cascading context bloat
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skills should use `#file:` and `#tool:` syntax for file and tool references according to markdown.instructions.md guidelines
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill files must include workflow sections in the following order: Title and introduction (H1), When to use this skill, Required tools, Workflow (numbered sequential steps), Completion criteria or quality standards, Self-healing (for maintenance skills), About maintenance
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Check for typos and formatting consistency in documentation changes
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill workflow steps must be numbered sequentially with substeps clearly delineated and logically organized for agent execution
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Maintain accuracy of mathematical formulas and calculations in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Verify all internal Markdown links resolve to existing files
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/({_layouts,_includes})/**/*.{html,md} : Follow established patterns in `_layouts/` and `_includes/` directories
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-02T02:01:48.007Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1384
File: tests/indicators/s-z/Tsi/Tsi.Tests.cs:14-14
Timestamp: 2025-09-02T02:01:48.007Z
Learning: The Stock.Indicators repository uses centralized package management via tests\Directory.Packages.props to define MSTest package versions across all test projects, currently using MSTest.TestAdapter and MSTest.TestFramework version 3.10.3.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-30T22:14:21.695Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1446
File: .github/workflows/test-integration.yml:3-8
Timestamp: 2025-09-30T22:14:21.695Z
Learning: For the Stock.Indicators repository, integration tests in `.github/workflows/test-integration.yml` are intentionally not run on pull requests when the test suite is minimal (e.g., only one test). The maintainer prefers to add the pull_request trigger back when integration tests become more prevalent. This is a library package not expected to have extensive integration testing.
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-06T06:43:47.544Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1880
File: docs/indicators/Beta.md:69-69
Timestamp: 2026-01-06T06:43:47.544Z
Learning: The repository's docs/.markdownlint-cli2.jsonc config permits the listed HTML elements for MD033 in Markdown files. For any Markdown under docs (e.g., docs/indicators/Beta.md), verify that any HTML elements used are within the allowed list. If an element is used that's not in the allowed list, flag it for removal or adjust the config accordingly.
Applied to files:
docs/contributing.md
🔇 Additional comments (7)
docs/contributing.md (2)
231-231: Verify v2 reference aligns with new versioning model.Line 231 references creating preview releases from "
mainorv2", but the branch-based versioning section (lines 212–216) describes the model as supportingmain(2.x.x),v3(3.x.x-preview.N), and feature branches. The PR targets thev3branch for the new versioning model. Confirm whetherv2is a valid deployment branch in the new model or if this reference should be updated to reflect current branches.
197-297: Markdown formatting and structure are compliant.The revised Versioning section follows all coding guidelines: proper sentence-case headers, hyphens for bullets, correct header hierarchy (no skipping levels), blank lines before/after headers and code blocks, and appropriate code block language identifiers. Tables use correct pipe-delimited format with alignment indicators.
.github/workflows/deploy-package-nuget.yml (4)
1-20: LGTM! Clear workflow documentation and appropriate trigger configuration.The workflow documentation thoroughly explains the deployment behavior, versioning approach, and dry-run mode. The trigger on release events (published and created) aligns with the described production deployment workflow.
22-26: LGTM! Permissions are properly scoped.The workflow permissions are appropriate for the deployment operations and OIDC authentication to nuget.org.
175-181: Publish step structure is correct but depends on fixing authentication.The package publish step is well-structured with proper conditionals and the
--skip-duplicateflag. However, it depends on thenuget_loginstep output which needs to be fixed (see previous comment about the non-existent NuGet/login action).
33-112: All GitHub Actions are using current versions.The workflow correctly uses:
- actions/checkout@v6 (latest major version)
- actions/setup-dotnet@v5 (latest major version)
- jacobtomlinson/gha-find-replace@v3 (latest version)
- actions/upload-artifact@v6 (latest major version)
The package job structure is sound with appropriate error handling and security practices.
.github/workflows/deploy-package-github.yml (1)
71-82: Updateactions/download-artifactfrom v5 to v4 and pin third-party action to SHA.
actions/download-artifact@v5is deprecated; the current major version is v4. Additionally, for supply-chain security in this deployment workflow, pinjacobtomlinson/gha-find-replace(line 113) to a specific commit SHA rather than using a major version reference.Applies to: line 199 (and line 113 for SHA pinning)
⛔ Skipped due to learnings
Learnt from: DaveSkender Repo: DaveSkender/Stock.Indicators PR: 1734 File: .github/workflows/test-indicators-matrix.yml:38-51 Timestamp: 2025-11-12T00:30:31.400Z Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.Learnt from: CR Repo: DaveSkender/Stock.Indicators PR: 0 File: AGENTS.md:0-0 Timestamp: 2026-01-03T07:34:40.247Z Learning: Use Solution tasks (Restore, Build, Test) or run `dotnet restore`, `dotnet build`, and `dotnet test --no-restore` from repository root
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 196-202: The "Download package" step currently uses
actions/download-artifact@v5 while the package upload uses upload-artifact@v6;
update the "Download package" step (the step with name "Download package" and
the uses entry actions/download-artifact@v5) to use actions/download-artifact@v6
so the upload and download artifact actions use matching major versions for
compatibility.
In @.github/workflows/deploy-package-nuget.yml:
- Around line 74-83: The workflow's "Compose package info" step uses xmllint but
never installs libxml2-utils; add a preceding step (before the Compose package
info step) that installs xmllint (e.g., run apt-get update && apt-get install -y
libxml2-utils) on the runner so the xmllint invocation that reads
src/Indicators.csproj succeeds; ensure the new step runs on the same job and
exposes xmllint to the "Compose package info" step.
- Around line 183-188: The workflow step named "Production package published"
uses an incorrect boolean check ` ${{ !env.dry_run }}`; change its if condition
to explicitly compare the env var string (e.g. ` ${{ env.dry_run != 'true' }}`)
so the step only runs when dry_run is not the literal 'true'. Locate the step
with the name "Production package published" and replace the conditional
expression accordingly.
In @docs/contributing.md:
- Line 257: Update the incorrect workflow filenames in the contributing docs:
change references to `.github/workflows/deploy-package.yml` and
`.github/workflows/deploy-production.yml` so they match the actual files in this
PR — replace `.github/workflows/deploy-package.yml` with
`.github/workflows/deploy-package-github.yml` and replace
`.github/workflows/deploy-production.yml` with
`.github/workflows/deploy-package-nuget.yml`, leaving the existing correct
reference to `.github/workflows/deploy-package-nuget.yml` unchanged.
🧹 Nitpick comments (3)
.github/workflows/deploy-package-github.yml (2)
52-53: Duplicate GitVersion installation.GitVersion.Tool is installed twice: once at line 53 and again at line 86. Remove the duplicate installation to improve workflow efficiency.
Suggested fix
- name: Setup GitVersion Tool run: dotnet tool install --global GitVersion.Tool - - name: Validate CI deployment + - name: Checkout source + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Validate CI deployment run: | echo "✅ CI deployment to GitHub Packages" echo " Branch: ${{ github.ref }}" echo " Run: ${{ github.run_number }}" - name: Set workflow mode id: settings run: | if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then echo "dry_run=${{ inputs.dry_run }}" >> $GITHUB_OUTPUT else echo "dry_run=false" >> $GITHUB_OUTPUT fi - - name: Checkout source - uses: actions/checkout@v6 - with: - fetch-depth: 0 - - name: Setup .NET SDK uses: actions/setup-dotnet@v5 with: dotnet-version: "10.x" dotnet-quality: "ga" cache: true cache-dependency-path: "**/packages.lock.json" - name: Install dependencies run: | sudo apt-get update && sudo apt-get install -y libxml2-utils - dotnet tool install --global GitVersion.ToolAlso applies to: 83-86
149-150: Missing blank line before step.Add a blank line before the "Summary output" step for consistency with the formatting of other steps in this workflow.
Suggested fix
include-hidden-files: true + - name: Summary outputdocs/contributing.md (1)
247-256: Minor: Missing "Automatic" label in section header.The section is titled "CI Package Deploy (Automatic)" in the header but the trigger description says "Automatic" separately. Consider consistency with the header by removing redundancy or keeping the header aligned with "Production Package Deploy (Manual)" which doesn't repeat "Manual" in the body.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.ymldocs/contributing.md
🧰 Additional context used
📓 Path-based instructions (9)
docs/**/*.md
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.md: Follow markdown linting rules in the.github/instructions/markdown.instructions.mdfile
Ensure YAML front matter follows documented schema
Include required YAML front matter for all documentation pages
Use consistent layout references in Jekyll front matter
Set appropriate page titles and descriptions in Jekyll front matter
Include navigation metadata in front matter when applicable
Document version-specific features appropriately
Provide migration guidance for breaking changes in documentation
Files:
docs/contributing.md
⚙️ CodeRabbit configuration file
docs/**/*.md: Check for:
- Accuracy: Ensure content matches current implementation
- Completeness: Verify examples, parameters, and return values are documented
- Accessibility: Flag missing alt text, poor heading hierarchy
- Link validity: Check for broken internal/external links
- Mathematical formulas: Verify calculation descriptions are correct
Files:
docs/contributing.md
docs/**/*.{html,md}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Use semantic HTML elements when HTML is required
Files:
docs/contributing.md
docs/**/*.{md,html}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,html}: Provide alt text for all images
Ensure proper heading hierarchy with no skipping levels
Include descriptive link text and avoid 'click here' phrases
Verify all internal and external links work in documentation
Check for typos and formatting consistency in documentation changes
Maintain accuracy of mathematical formulas and calculations in documentation
Clearly mark deprecated features in documentation
Files:
docs/contributing.md
docs/**
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Build Jekyll documentation without errors before committing changes
Files:
docs/contributing.md
docs/**/*.{md,yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,yml,yaml}: Update examples and documentation when API changes occur
Maintain backward compatibility in examples where possible
Files:
docs/contributing.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Markdown: Run
npx markdownlint-cli2for linting andnpx markdownlint-cli2 --fixfor auto-fixing
Files:
docs/contributing.md
**/*.{md,markdown,.markdownlint*}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown,.markdownlint*}: Runnpx markdownlint-cli2 --no-globs {filepath} --fixto auto-fix Markdown linting issues, always using--no-globswith explicit file paths to prevent unintended glob expansion
Runnpx markdownlint-cli2 --no-globs {filepath}to verify zero linting errors after manual fixes
Files:
docs/contributing.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown}: Never bypass lint warnings; resolve or add narrow suppressions with<!-- markdownlint-disable MD### -->...<!-- markdownlint-enable MD### -->
Convert title case in headers to sentence case: 'How To Use' → 'How to use'
Convert title case in bold labels to sentence case: 'Next Steps:' → 'Next steps:'
Replace asterisk bullets (*,+) with hyphens (-)
Convert Setext headers (===,---) to ATX headers (#,##)
Add blank lines before and after headers
Add blank lines before and after code block fences
Remove backticks in#file:references: use#file:pathnot`#file:path`
Remove trailing punctuation after#file:references or add space
Add language identifier to all fenced code blocks (useplaintextwhen language is unknown)
Increase outer fence length for nested code blocks to be greater than inner fence length
Convert ordered lists for non-sequential items to unordered hyphen lists
Use present tense and imperative mood in Markdown prose: 'Run the command' not 'You should run'
Use sentence case only for headers (capitalize first word + proper nouns, lowercase articles, prepositions, conjunctions)
Use ATX-style headers only (#,##,###); never use Setext style (===,---)
Maintain sequential header hierarchy without skipping levels:#→##→###
Always use hyphens (-) for bullet points; never asterisks (*) or plus signs (+)
Indent nested lists with exactly two spaces
Use ordered lists (1., 2., 3.) only when sequence matters
Use sentence case for bold labels that start list items
Always use fenced code blocks (); never use indented code blocks
Do not wrap#file:or#folder:context tokens in backticks
Do not place punctuation immediately after#file:or#folder:tokens
Never usefile:URI scheme (e.g.,file:///path/to/doc.md) as these always force auto-loading
Use standard Markdown links for URLs only, not for local workspace files
Use#tool:syntax only for VS Code Copilot Cha...
Files:
docs/contributing.md
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
🧠 Learnings (21)
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Document version-specific features appropriately
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Provide migration guidance for breaking changes in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-01T06:10:39.665Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/AGENTS.md:0-0
Timestamp: 2026-01-01T06:10:39.665Z
Learning: Applies to src/**/MigrationGuide.V3.md : Update `MigrationGuide.V3.md` with migration notes and bridges when behavior changes
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Ensure documentation site builds successfully in the CI/CD pipeline
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-24T07:46:46.923Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1771
File: .github/instructions/indicator-buffer.instructions.md:321-321
Timestamp: 2025-12-24T07:46:46.923Z
Learning: "Last updated" dates in instruction files (.github/instructions/*.md) should only be updated for meaningful content changes to the guidance itself, not for administrative changes like path updates, link corrections, or file reorganization.
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Verify all internal and external links work in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Applies to {AGENTS.md,**/instructions/*.md,*.instructions.md} : Replace `#file:` references with plain-text path mentions in entry point files (AGENTS.md, root instruction files) to prevent cascading context bloat
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skills should use `#file:` and `#tool:` syntax for file and tool references according to markdown.instructions.md guidelines
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill files must include workflow sections in the following order: Title and introduction (H1), When to use this skill, Required tools, Workflow (numbered sequential steps), Completion criteria or quality standards, Self-healing (for maintenance skills), About maintenance
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Check for typos and formatting consistency in documentation changes
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill workflow steps must be numbered sequentially with substeps clearly delineated and logically organized for agent execution
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Maintain accuracy of mathematical formulas and calculations in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Verify all internal Markdown links resolve to existing files
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/({_layouts,_includes})/**/*.{html,md} : Follow established patterns in `_layouts/` and `_includes/` directories
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,yml,yaml} : Maintain backward compatibility in examples where possible
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-02T02:01:48.007Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1384
File: tests/indicators/s-z/Tsi/Tsi.Tests.cs:14-14
Timestamp: 2025-09-02T02:01:48.007Z
Learning: The Stock.Indicators repository uses centralized package management via tests\Directory.Packages.props to define MSTest package versions across all test projects, currently using MSTest.TestAdapter and MSTest.TestFramework version 3.10.3.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-30T22:14:21.695Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1446
File: .github/workflows/test-integration.yml:3-8
Timestamp: 2025-09-30T22:14:21.695Z
Learning: For the Stock.Indicators repository, integration tests in `.github/workflows/test-integration.yml` are intentionally not run on pull requests when the test suite is minimal (e.g., only one test). The maintainer prefers to add the pull_request trigger back when integration tests become more prevalent. This is a library package not expected to have extensive integration testing.
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-06T06:43:47.544Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1880
File: docs/indicators/Beta.md:69-69
Timestamp: 2026-01-06T06:43:47.544Z
Learning: The repository's docs/.markdownlint-cli2.jsonc config permits the listed HTML elements for MD033 in Markdown files. For any Markdown under docs (e.g., docs/indicators/Beta.md), verify that any HTML elements used are within the allowed list. If an element is used that's not in the allowed list, flag it for removal or adjust the config accordingly.
Applied to files:
docs/contributing.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: linting (full)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (7)
.github/workflows/deploy-package-github.yml (2)
225-330: LGTM on cleanup logic with continue-on-error.The cleanup job properly uses
continue-on-error: trueto prevent workflow failures if cleanup encounters issues, and the logic correctly handles both retention days and minimum keep count. The error handling within the script is comprehensive.
238-259: No action required. The cleanup script uses the correct API endpoint for this repository's owner type. The repository is owned by a user (DaveSkender), not an organization, sogetAllPackageVersionsForPackageOwnedByUseris the appropriate endpoint. If the repository were transferred to an organization in the future, the endpoint would need to be updated togetAllPackageVersionsForPackageOwnedByOrg, but no change is needed at this time.Likely an incorrect or invalid review comment.
.github/workflows/deploy-package-nuget.yml (3)
98-104: Missing --include-symbols flag for NuGet package.The GitHub workflow (line 140) includes
--include-symbolswhen packing, but this workflow does not. This inconsistency means production packages won't include symbol packages for debugging.Is this intentional? If symbol packages should be published to nuget.org for debugging support, add the flag:
Suggested fix (if symbols are desired)
- name: Create NuGet package run: | dotnet pack src/Indicators.csproj \ --no-build \ --configuration Release \ --output NuGet \ + --include-symbols \ -p:PackageVersion=${{ steps.version_info.outputs.version }}
18-25: LGTM on permissions and OIDC setup.The workflow correctly requests
id-token: writepermission required for OIDC authentication to nuget.org, and the trigger conditions for published/created releases are appropriate for production deployment.
168-174: OIDC configuration in the workflow is properly set up. The workflow includes requiredid-token: writepermissions (lines 25 and 143-146), uses the standardNuGet/login@v1action correctly, and consumes the temporary API key immediately after login (line 180).Ensure the nuget.org account has a Trusted Publishing policy configured to allow OIDC authentication from this workflow, and verify the
NUGET_USERsecret is set in the repository settings.docs/contributing.md (2)
284-291: LGTM on version examples table.The table clearly illustrates the different versioning scenarios with appropriate triggers, version formats, and registries. This provides excellent clarity for contributors.
197-227: LGTM on versioning documentation.The branch-based versioning explanation is clear and accurate. The semver tags for controlling version increments are well documented with practical examples.
Updated permissions and removed unnecessary steps in the GitHub Actions workflow. Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 34-45: The workflow grants unnecessary repo write permissions:
remove or change the explicit "permissions: contents: write" entries under the
"package" job (and the analogous "deploy" job mentioned) so they do not elevate
GITHUB_TOKEN beyond what's needed; either delete the per-job permissions block
to inherit the top-level "contents: read" or set it to "contents: read"
explicitly, ensuring no job declares "contents: write" when it does not perform
pushes/tags/releases.
🧹 Nitpick comments (3)
.github/workflows/deploy-package-github.yml (3)
16-33: Pin runner image (avoidubuntu-latestdrift).For release/publish workflows, consider pinning to a specific Ubuntu image (e.g.,
ubuntu-24.04) to reduce surprise breakages from runner updates.Proposed diff
- runs-on: ubuntu-latest + runs-on: ubuntu-24.04 ... - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 ... - runs-on: ubuntu-latest + runs-on: ubuntu-24.04Also applies to: 40-41, 168-170, 224-226
235-238: Avoid masking cleanup failures withcontinue-on-error(or at least fail on “real” errors).Right now permissions/endpoint errors can silently pass. If the intent is “best effort”, consider still failing the step when you’ve confirmed the package exists but deletions repeatedly fail (rate limits / perms), so you notice regressions.
Also applies to: 324-327
82-93: Pin GitVersion.Tool version and use correct invocation; jq is pre-installed but worth making explicit.The suggestions to pin GitVersion.Tool to
6.*and explicitly installjqare sound. Additionally, usedotnet-gitversion(the global tool shim command) instead ofdotnet gitversionwhen invoking the tool after installation.Proposed diff
- name: Install dependencies run: | - sudo apt-get update && sudo apt-get install -y libxml2-utils - dotnet tool install --global GitVersion.Tool + sudo apt-get update && sudo apt-get install -y libxml2-utils jq + dotnet tool install --global GitVersion.Tool --version 6.* - name: Generate version info id: gitversion run: | - dotnet gitversion -config src/gitversion.yml -updateassemblyinfo - dotnet gitversion -config src/gitversion.yml | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV + dotnet-gitversion -config src/gitversion.yml -updateassemblyinfo + dotnet-gitversion -config src/gitversion.yml | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/deploy-package-github.yml
🧰 Additional context used
📓 Path-based instructions (1)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml
🧠 Learnings (2)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: linting (full)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (2)
.github/workflows/deploy-package-github.yml (2)
69-80: All referenced action versions are current and valid; SHA pinning can be considered for additional hardening.The versions used are standard current releases:
actions/checkout@v6,actions/setup-dotnet@v5,actions/upload-artifact@v6,actions/download-artifact@v5,actions/github-script@v8, andjacobtomlinson/gha-find-replace@v3are all current as of January 2026, with no newer major versions released. These are not atypical—they represent the latest stable versions for each action.While pinning to commit SHAs is a valid supply-chain hardening practice and can be adopted if desired, it is not necessary to resolve version mismatches, as all referenced versions exist and are actively maintained.
Likely an incorrect or invalid review comment.
87-107: Fix-warnAsErrorCLI syntax error and resolve version source inconsistency.The
-warnAsErrorflag is incorrect. Use-- /warnaserror(or-p:TreatWarningsAsErrors=true/-p:WarningsAsErrors=true) instead.Additionally, the
-updateassemblyinfoflag in GitVersion updates assembly metadata based ongitversion.yml, but the subsequent build step overrides theVersionproperty with a custom CI version (3.0.0-ci-1234format). This creates a conflict where assembly version and package version may diverge—GitVersion's computed version won't match the custom CI version written to the package. Consider either:
- Removing
-updateassemblyinfoand relying solely on the MSBuild Version override, or- Using GitVersion's computed
MajorMinorPatchdirectly instead of composing a separate CI versionApplies to lines 129 (build command) and 122-139 (version handling).
⛔ Skipped due to learnings
Learnt from: CR Repo: DaveSkender/Stock.Indicators PR: 0 File: AGENTS.md:0-0 Timestamp: 2026-01-03T07:34:40.247Z Learning: Applies to **/*.cs : Treat all warnings and errors as failures that must be fixed; do not accept, ignore, or suppress warnings regardless of scope or reason
Signed-off-by: Dave Skender <[email protected]>
Added a step to install libxml2-utils before composing package info. Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-github.yml:
- Around line 172-174: Remove the unnecessary repository contents permission
from the GitHub Actions workflow by deleting the "contents: write" entry under
the permissions block for the deploy job; keep only the required "packages:
write" permission so the deploy job can publish packages without granting write
access to repository contents.
- Around line 43-44: Remove the overly-permissive permission by deleting the
`contents: write` entry under the job's `permissions` in
.github/workflows/deploy-package-github.yml for the `package` job (or replace it
with `contents: read` if explicit read access is required); this ensures the job
no longer requests write access to repository contents.
- Line 70: Update the workflow to use the maintained actions and mitigate the
unmaintained find-replace action: bump actions/download-artifact@v6 to
actions/download-artifact@v7; replace jacobtomlinson/gha-find-replace@v3 with an
actively maintained alternative (or remove it and use native GitHub CLI/grep+sed
steps) or at minimum pin its exact commit SHA and add a comment/TODO for
security monitoring; ensure any changed usages of download-artifact or
find-replace in the job steps still match the expected inputs/outputs and update
step names if needed.
🧹 Nitpick comments (2)
.github/workflows/deploy-package-github.yml (2)
87-93: Consider optimizing GitVersion invocations.GitVersion runs twice: once with
-updateassemblyinfoand once to export variables. While functional, this could be streamlined to reduce execution time.♻️ Optimization suggestion
- name: Generate version info id: gitversion run: | - dotnet gitversion -config src/gitversion.yml -updateassemblyinfo # Export GitVersion variables to environment - dotnet gitversion -config src/gitversion.yml | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENV + dotnet gitversion -config src/gitversion.yml -updateassemblyinfo | jq -r 'to_entries[] | "\(.key)=\(.value)"' >> $GITHUB_ENVNote: Verify that
-updateassemblyinfostill produces JSON output when combined this way.
209-214: Consider referencing actual retention value instead of hardcoding.Line 213 mentions "90 days" but this value is hardcoded in the cleanup script (line 242). If the retention period changes, this message could become inaccurate.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/deploy-package-github.yml
🧰 Additional context used
📓 Path-based instructions (1)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml
🧠 Learnings (3)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Applies to **/*.{md,markdown} : Use GitHub alert blocks sparingly for critical execution warnings: `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, `> [!CAUTION]`
Applied to files:
.github/workflows/deploy-package-github.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (5)
.github/workflows/deploy-package-github.yml (5)
235-331: Excellent error handling in cleanup job.The cleanup implementation demonstrates robust error handling:
continue-on-error: trueprevents workflow failure- Nested try-catch blocks handle both overall and per-version failures
- Clear logging at each error level
- Graceful degradation when packages don't exist yet
This pattern is well-suited for maintenance jobs.
30-32: Concurrency control is appropriate for CI builds.The
cancel-in-progress: truesetting is well-suited for CI package builds, as it prevents redundant builds on the same branch while ensuring each published package has a unique version number (viarun_number).
94-107: CI versioning strategy is well-designed.The version composition using
MajorMinorPatch-ci.{run_number}ensures:
- Semantic base version from GitVersion
- Unique, monotonically increasing versions via
run_number- Clear identification of CI builds via
-ci-suffixThis aligns with the documented workflow objectives.
268-311: Cleanup retention logic is well-balanced.The two-tier retention strategy (keep N most recent + time-based cutoff) ensures:
- Recent versions are always retained (prevents aggressive cleanup)
- Old versions are eventually removed (prevents unbounded growth)
- Graceful handling when retention period hasn't elapsed yet
60-67: Dry-run implementation is comprehensive.The dry-run mode is properly implemented across all jobs:
- Determined by event type (workflow_dispatch vs push)
- Consistently checked before deployment operations
- Clearly communicated in job summaries
This enables safe testing of the packaging workflow.
Also applies to: 202-202, 225-225
Signed-off-by: Dave Skender <[email protected]>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In @.github/workflows/deploy-package-nuget.yml:
- Around line 22-26: The workflow grants overly broad permissions; update the
permissions blocks (the top-level permissions: and any job-level permissions in
the deploy/package jobs) to the least privilege required by removing contents:
write and packages: write and keep only id-token: write for OIDC authentication;
ensure any job that needs no extra scopes uses permissions: { id-token: write }
(or equivalent minimal YAML) so only the deploy step performing NuGet push has
id-token write and no unnecessary contents/packages permissions remain.
- Around line 88-93: The "Replace version markers" step uses
jacobtomlinson/gha-find-replace@v3 which must be pinned to a commit SHA and
annotated with the tag (e.g., replace @v3 with @<commit-sha> and add a comment
with the v3 tag) to satisfy security guidelines, and because the step is
redundant (the version is already injected via the dotnet pack -p:PackageVersion
flag) either remove the entire "Replace version markers" step or, if you intend
to keep it, document where the "#{PACKAGE_VERSION}#" marker should exist in the
repo and add the commit SHA pin and comment for maintainability.
🧹 Nitpick comments (2)
.github/workflows/deploy-package-nuget.yml (2)
33-36: Consider removingfetch-depth: 0for faster checkout.The workflow fetches full git history, but since versioning comes from the release tag (not git history or GitVersion), only the current commit is needed for building and packing.
As per coding guidelines (efficiency for workflows), optimize CI/CD performance.
⚡ Proposed fix to improve efficiency
- name: Checkout source uses: actions/checkout@v6 - with: - fetch-depth: 0
74-86: Consider more robust package info extraction.The
xmllintXPath approach is fragile and could break if the csproj XML structure changes (e.g., namespaces added, multiple PropertyGroup elements). The hardcoded pathsrc/Indicators.csprojalso creates tight coupling.💡 Alternative using MSBuild properties
- - name: Install dependencies - run: sudo apt-get update && sudo apt-get install -y libxml2-utils - - name: Compose package info id: package_info run: | - PACKAGE_NAME=$(xmllint --xpath "//PropertyGroup/PackageId/text()" src/Indicators.csproj 2>/dev/null) + PACKAGE_NAME=$(dotnet build src/Indicators.csproj --no-restore --getProperty:PackageId) if [[ -z "$PACKAGE_NAME" ]]; then echo "::error::Could not extract PackageId from src/Indicators.csproj" exit 1 fi echo "name=${PACKAGE_NAME}" >> $GITHUB_OUTPUT echo "url=https://www.nuget.org/packages/${PACKAGE_NAME}/${{ steps.version_info.outputs.version }}" >> $GITHUB_OUTPUTNote: Verify the exact MSBuild property syntax with your .NET version.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/deploy-package-nuget.yml
🧰 Additional context used
📓 Path-based instructions (1)
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-nuget.yml
🧠 Learnings (2)
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-nuget.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-nuget.yml
⏰ Context from checks skipped due to timeout of 400000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (4)
.github/workflows/deploy-package-nuget.yml (4)
44-57: LGTM!Version extraction logic correctly strips the 'v' prefix and includes proper validation for empty versions with clear error messages.
178-184: LGTM with a note on wildcard behavior.The package publishing logic correctly handles dry-run mode and uses
--skip-duplicateto prevent errors. The wildcardNuGet/*.nupkgwill publish all matching packages, which should be fine if only one package is expected in the directory.
18-20: Document or review the 'created' trigger behavior.The workflow triggers on both
publishedandcreatedrelease events. Thecreatedevent fires when a draft release is saved, causing this workflow to run in dry-run mode. While this enables validation before actual publication, it may be unexpected behavior.Confirm this is intentional. If draft releases should not trigger any workflow execution, consider using only the
publishedtype:on: release: - types: [published, created] + types: [published]
171-176: NuGet/login@v1 is the correct and official GitHub Action for OIDC authentication.The action is valid and properly configured for exchanging OIDC tokens with nuget.org's Trusted Publishing. No changes required.
For enhanced security (optional), consider pinning the action to a specific commit SHA instead of the version tag, as per GitHub Actions best practices. This mitigates the risk of tag tampering.
Removed 'contents: write' permission from package jobs. Signed-off-by: Dave Skender <[email protected]>
Updated permissions to restrict access to read for contents. Signed-off-by: Dave Skender <[email protected]>
Signed-off-by: Dave Skender <[email protected]>
Signed-off-by: Dave Skender <[email protected]>
Removed step to replace version markers in GitHub Actions workflow. Signed-off-by: Dave Skender <[email protected]>
|
@coderabbitai re-review |
|
@DaveSkender, I'll review all the changes in this PR for you. ✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
.github/workflows/deploy-package-nuget.yml (1)
139-153: Consider adding environment protection for production deployments.The deploy job publishes to nuget.org (production) but doesn't declare a GitHub Environment. Adding an environment with protection rules (e.g.,
environment: name: nuget.org) would provide additional deployment safeguards like required reviewers or deployment delays for production releases.♻️ Suggested enhancement
Add after line 142:
environment: name: nuget.org url: ${{ needs.package.outputs.url }}Then configure protection rules in repository settings → Environments → nuget.org.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.ymldocs/contributing.md
🧰 Additional context used
📓 Path-based instructions (9)
docs/**/*.md
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.md: Follow markdown linting rules in the.github/instructions/markdown.instructions.mdfile
Ensure YAML front matter follows documented schema
Include required YAML front matter for all documentation pages
Use consistent layout references in Jekyll front matter
Set appropriate page titles and descriptions in Jekyll front matter
Include navigation metadata in front matter when applicable
Document version-specific features appropriately
Provide migration guidance for breaking changes in documentation
Files:
docs/contributing.md
⚙️ CodeRabbit configuration file
docs/**/*.md: Check for:
- Accuracy: Ensure content matches current implementation
- Completeness: Verify examples, parameters, and return values are documented
- Accessibility: Flag missing alt text, poor heading hierarchy
- Link validity: Check for broken internal/external links
- Mathematical formulas: Verify calculation descriptions are correct
Files:
docs/contributing.md
docs/**/*.{html,md}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Use semantic HTML elements when HTML is required
Files:
docs/contributing.md
docs/**/*.{md,html}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,html}: Provide alt text for all images
Ensure proper heading hierarchy with no skipping levels
Include descriptive link text and avoid 'click here' phrases
Verify all internal and external links work in documentation
Check for typos and formatting consistency in documentation changes
Maintain accuracy of mathematical formulas and calculations in documentation
Clearly mark deprecated features in documentation
Files:
docs/contributing.md
docs/**
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
Build Jekyll documentation without errors before committing changes
Files:
docs/contributing.md
docs/**/*.{md,yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/docs.instructions.md)
docs/**/*.{md,yml,yaml}: Update examples and documentation when API changes occur
Maintain backward compatibility in examples where possible
Files:
docs/contributing.md
**/*.md
📄 CodeRabbit inference engine (AGENTS.md)
Markdown: Run
npx markdownlint-cli2for linting andnpx markdownlint-cli2 --fixfor auto-fixing
Files:
docs/contributing.md
**/*.{md,markdown,.markdownlint*}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown,.markdownlint*}: Runnpx markdownlint-cli2 --no-globs {filepath} --fixto auto-fix Markdown linting issues, always using--no-globswith explicit file paths to prevent unintended glob expansion
Runnpx markdownlint-cli2 --no-globs {filepath}to verify zero linting errors after manual fixes
Files:
docs/contributing.md
**/*.{md,markdown}
📄 CodeRabbit inference engine (.github/instructions/markdown.instructions.md)
**/*.{md,markdown}: Never bypass lint warnings; resolve or add narrow suppressions with<!-- markdownlint-disable MD### -->...<!-- markdownlint-enable MD### -->
Convert title case in headers to sentence case: 'How To Use' → 'How to use'
Convert title case in bold labels to sentence case: 'Next Steps:' → 'Next steps:'
Replace asterisk bullets (*,+) with hyphens (-)
Convert Setext headers (===,---) to ATX headers (#,##)
Add blank lines before and after headers
Add blank lines before and after code block fences
Remove backticks in#file:references: use#file:pathnot`#file:path`
Remove trailing punctuation after#file:references or add space
Add language identifier to all fenced code blocks (useplaintextwhen language is unknown)
Increase outer fence length for nested code blocks to be greater than inner fence length
Convert ordered lists for non-sequential items to unordered hyphen lists
Use present tense and imperative mood in Markdown prose: 'Run the command' not 'You should run'
Use sentence case only for headers (capitalize first word + proper nouns, lowercase articles, prepositions, conjunctions)
Use ATX-style headers only (#,##,###); never use Setext style (===,---)
Maintain sequential header hierarchy without skipping levels:#→##→###
Always use hyphens (-) for bullet points; never asterisks (*) or plus signs (+)
Indent nested lists with exactly two spaces
Use ordered lists (1., 2., 3.) only when sequence matters
Use sentence case for bold labels that start list items
Always use fenced code blocks (); never use indented code blocks
Do not wrap#file:or#folder:context tokens in backticks
Do not place punctuation immediately after#file:or#folder:tokens
Never usefile:URI scheme (e.g.,file:///path/to/doc.md) as these always force auto-loading
Use standard Markdown links for URLs only, not for local workspace files
Use#tool:syntax only for VS Code Copilot Cha...
Files:
docs/contributing.md
.github/**/*.yml
⚙️ CodeRabbit configuration file
.github/**/*.yml: Review for:
- Security: No secrets in workflows, proper permissions
- Efficiency: Optimize CI/CD performance, avoid redundant builds
- Dependencies: Keep actions and versions current
- Error handling: Proper failure scenarios and notifications
Files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
🧠 Learnings (22)
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Document version-specific features appropriately
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.md : Provide migration guidance for breaking changes in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-01T06:10:39.665Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: src/AGENTS.md:0-0
Timestamp: 2026-01-01T06:10:39.665Z
Learning: Applies to src/**/MigrationGuide.V3.md : Update `MigrationGuide.V3.md` with migration notes and bridges when behavior changes
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Ensure documentation site builds successfully in the CI/CD pipeline
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Verify all internal and external links work in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Applies to {AGENTS.md,**/instructions/*.md,*.instructions.md} : Replace `#file:` references with plain-text path mentions in entry point files (AGENTS.md, root instruction files) to prevent cascading context bloat
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skills should use `#file:` and `#tool:` syntax for file and tool references according to markdown.instructions.md guidelines
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill files must include workflow sections in the following order: Title and introduction (H1), When to use this skill, Required tools, Workflow (numbered sequential steps), Completion criteria or quality standards, Self-healing (for maintenance skills), About maintenance
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Check for typos and formatting consistency in documentation changes
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Verify all internal Markdown links resolve to existing files
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-03T00:10:34.748Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/skills.instructions.md:0-0
Timestamp: 2026-01-03T00:10:34.748Z
Learning: Applies to **/.github/skills/**/SKILL.md : Skill workflow steps must be numbered sequentially with substeps clearly delineated and logically organized for agent execution
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,html} : Maintain accuracy of mathematical formulas and calculations in documentation
Applied to files:
docs/contributing.md
📚 Learning: 2025-12-08T10:38:10.035Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/docs.instructions.md:0-0
Timestamp: 2025-12-08T10:38:10.035Z
Learning: Applies to docs/**/*.{md,yml,yaml} : Maintain backward compatibility in examples where possible
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-28T22:37:53.272Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1406
File: .github/copilot-instructions.md:37-55
Timestamp: 2025-09-28T22:37:53.272Z
Learning: For the Stock Indicators repository: Use double for performance in iterative indicator calculations, then promote to decimal when exposing price-sensitive or monetary results that require trading accuracy. The canonical numeric precision policy is documented in .github/instructions/source-code-completion.instructions.md and referenced in spec-kit integration guide.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-02T02:01:48.007Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1384
File: tests/indicators/s-z/Tsi/Tsi.Tests.cs:14-14
Timestamp: 2025-09-02T02:01:48.007Z
Learning: The Stock.Indicators repository uses centralized package management via tests\Directory.Packages.props to define MSTest package versions across all test projects, currently using MSTest.TestAdapter and MSTest.TestFramework version 3.10.3.
Applied to files:
docs/contributing.md
📚 Learning: 2025-09-30T22:14:21.695Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1446
File: .github/workflows/test-integration.yml:3-8
Timestamp: 2025-09-30T22:14:21.695Z
Learning: For the Stock.Indicators repository, integration tests in `.github/workflows/test-integration.yml` are intentionally not run on pull requests when the test suite is minimal (e.g., only one test). The maintainer prefers to add the pull_request trigger back when integration tests become more prevalent. This is a library package not expected to have extensive integration testing.
Applied to files:
docs/contributing.md.github/workflows/deploy-package-github.yml
📚 Learning: 2026-01-03T07:34:40.247Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-01-03T07:34:40.247Z
Learning: Applies to **/Indicators.csproj : Multi-target .NET framework versions: net10.0, net9.0, and net8.0 with analyzers enabled for strict code quality
Applied to files:
docs/contributing.md
📚 Learning: 2025-10-27T21:10:12.886Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1627
File: src/m-r/ParabolicSar/ParabolicSar.StreamHub.cs:12-12
Timestamp: 2025-10-27T21:10:12.886Z
Learning: Inline comments (e.g., "// State variables") used for organizational purposes within classes are acceptable in the Stock.Indicators codebase. The Roslynator RCS1181 diagnostic for converting comments to documentation comments should be suppressed, as it's considered unnecessary noise.
Applied to files:
docs/contributing.md
📚 Learning: 2026-01-06T06:43:47.544Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1880
File: docs/indicators/Beta.md:69-69
Timestamp: 2026-01-06T06:43:47.544Z
Learning: The repository's docs/.markdownlint-cli2.jsonc config permits the listed HTML elements for MD033 in Markdown files. For any Markdown under docs (e.g., docs/indicators/Beta.md), verify that any HTML elements used are within the allowed list. If an element is used that's not in the allowed list, flag it for removal or adjust the config accordingly.
Applied to files:
docs/contributing.md
📚 Learning: 2025-10-01T07:32:55.702Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/performance-testing.instructions.md:0-0
Timestamp: 2025-10-01T07:32:55.702Z
Learning: Applies to .github/workflows/test-performance.yml : The test-performance.yml workflow should build in Release, run the full benchmark suite, upload artifacts, publish summaries, and optionally run the regression detection step
Applied to files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
📚 Learning: 2025-11-12T00:30:31.400Z
Learnt from: DaveSkender
Repo: DaveSkender/Stock.Indicators PR: 1734
File: .github/workflows/test-indicators-matrix.yml:38-51
Timestamp: 2025-11-12T00:30:31.400Z
Learning: In .github/workflows/test-indicators-matrix.yml, the workflow always requires .NET 10 to build and run test projects. The "legacy sut" .NET SDK installation (e.g., 6.0.x) is only for multi-targeting support, and the TARGET_FRAMEWORK environment variable controls which framework version tests actually run against using the `--property:TestFramework` parameter.
Applied to files:
.github/workflows/deploy-package-github.yml.github/workflows/deploy-package-nuget.yml
📚 Learning: 2026-01-03T07:35:32.539Z
Learnt from: CR
Repo: DaveSkender/Stock.Indicators PR: 0
File: .github/instructions/markdown.instructions.md:0-0
Timestamp: 2026-01-03T07:35:32.539Z
Learning: Applies to **/*.{md,markdown} : Use GitHub alert blocks sparingly for critical execution warnings: `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, `> [!CAUTION]`
Applied to files:
.github/workflows/deploy-package-github.yml
🔇 Additional comments (6)
docs/contributing.md (2)
197-296: Excellent versioning documentation update.The comprehensive documentation of GitVersion-based versioning with branch-specific behaviors, deployment workflows, and practical examples significantly improves clarity for contributors. The structured approach with tables and code examples makes the versioning process transparent and actionable.
293-295: All referenced files exist and links resolve correctly. No issues found..github/workflows/deploy-package-github.yml (3)
84-103: GitVersion exports MajorMinorPatch correctly via jq parsing.The
$MajorMinorPatchvariable referenced at line 98 is correctly exported by the GitVersion output parsing at line 89. The jq commandto_entries[] | "\(.key)=\(.value)"exports all GitVersion JSON output variables to$GITHUB_ENV, including the standardMajorMinorPatchvariable (e.g., "3.0.0"). The gitversion.yml configuration is properly defined and the variable is available for subsequent steps.
131-131: No action needed.actions/upload-artifact@v6andactions/download-artifact@v7are fully compatible—both use the v4+ artifact backend, and version matching between major releases is not required as long as both remain on v4 or later.
240-248: No action needed—API endpoint is correct.The repository is user-owned by DaveSkender, so
getAllPackageVersionsForPackageOwnedByUserwith theusernameparameter is the correct API endpoint. No change is required..github/workflows/deploy-package-nuget.yml (1)
168-173: NuGet OIDC login action is correctly configured.The
NuGet/login@v1action is official and properly used. Theuserinput parameter correctly references theNUGET_USERsecret, and the workflow has the requiredid-token: writepermission for OIDC authentication. Ensure the repository has trusted publishing configured in NuGet.org settings.
Updated version format in CI deployment workflow. Signed-off-by: Dave Skender <[email protected]>
commit 98415b5 Author: JGronholz <[email protected]> Date: Sat Jan 10 13:03:36 2026 -0600 Update ReusableObserver.cs commit 7e271df Author: JGronholz <[email protected]> Date: Sat Jan 10 12:37:17 2026 -0600 Make ReusableObserver generic commit b7900e2 Author: JGronholz <[email protected]> Date: Sat Jan 10 12:19:57 2026 -0600 Update ReusableObserver.cs commit 5eff832 Merge: 37acf0d 52b6378 Author: JGronholz <[email protected]> Date: Sat Jan 10 10:58:43 2026 -0600 Merge pull request #7 from JGronholz/copilot/add-xml-documentation-streamhub docs: Add XML documentation to ReusableObserver commit 52b6378 Author: copilot-swe-agent[bot] <[email protected]> Date: Sat Jan 10 16:52:10 2026 +0000 Add comprehensive XML documentation to ReusableObserver - Add XML docs for IsSubscribed property with thread-safety notes - Add XML docs for constructor with parameter descriptions - Add null validation for required isSubscribed parameter - Add XML docs for all public methods (OnError, OnCompleted, Unsubscribe, OnAdd, OnRebuild, OnPrune, Reinitialize, Rebuild overloads) - Add test for ArgumentNullException validation Co-authored-by: JGronholz <[email protected]> commit c2632b4 Author: copilot-swe-agent[bot] <[email protected]> Date: Sat Jan 10 16:44:03 2026 +0000 Initial plan commit 37acf0d Author: JGronholz <[email protected]> Date: Sat Jan 10 10:27:47 2026 -0600 Update ReusableObserver.cs commit 938d7d2 Author: JGronholz <[email protected]> Date: Sat Jan 10 10:17:51 2026 -0600 Update ReusableObserver.cs commit 252a668 Author: JGronholz <[email protected]> Date: Sat Jan 10 10:15:40 2026 -0600 Update ReusableObserver.cs commit 608d471 Author: JGronholz <[email protected]> Date: Sat Jan 10 10:15:08 2026 -0600 Update ReusableObserver.cs commit ccef491 Author: JGronholz <[email protected]> Date: Sat Jan 10 09:23:06 2026 -0600 Create ReusableObserver.cs commit a277198 Author: Dave Skender <[email protected]> Date: Sat Jan 10 05:07:27 2026 -0500 feat: Add VitePress docs site (new) (DaveSkender#1739) Signed-off-by: Dave Skender <[email protected]> Signed-off-by: GitHub <[email protected]> Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> commit f165c8e Author: Dave Skender <[email protected]> Date: Sat Jan 10 01:14:26 2026 -0500 ci: Fix publish versioning (DaveSkender#1890) Signed-off-by: Dave Skender <[email protected]> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> commit cdf9131 Author: Copilot <[email protected]> Date: Thu Jan 8 23:41:19 2026 -0500 fix: Prevent dev version reset when preview tags are added (DaveSkender#1887) Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: DaveSkender <[email protected]>
No description provided.