Skip to content

Fix/orderservice integration test hang#17

Merged
emeraldleaf merged 4 commits into
mainfrom
fix/orderservice-integration-test-hang
May 23, 2026
Merged

Fix/orderservice integration test hang#17
emeraldleaf merged 4 commits into
mainfrom
fix/orderservice-integration-test-hang

Conversation

@emeraldleaf

@emeraldleaf emeraldleaf commented May 23, 2026

Copy link
Copy Markdown
Owner

What changed [required]

How it was built [required]

  • Pure AI-assisted, human-verified. Used Claude Code (or equivalent) to draft. I read every line, ran the build, and manually exercised the changed path before pushing.
  • AI-assisted with manual edits. Started from an AI draft, then refactored / fixed / added detail by hand. Verification as above.
  • Hand-written. No AI assistance on this change.
  • AI-generated, not yet verified. Marking as draft / WIP. Will verify before requesting review.

If AI was involved: link to the conversation transcript or commit messages that describe
the AI workflow (e.g. gh issue view N if the conversation is preserved in an issue).

Architecture impact [skip if N/A]

  • Adds a new domain entity / aggregate / value object
  • Adds a new event contract (in NextAurora.Contracts/Events)
  • Adds a new repository or port interface
  • Adds a new service or splits an existing one
  • Changes a published API surface (REST or gRPC)
  • Touches the outbox, sagas, or messaging topology
  • Modifies CLAUDE.md or a See CLAUDE.md paraphrase

For non-trivial architectural changes, consider invoking the architecture-reviewer agent
locally before requesting review.

Verification [required]

  • dotnet build clean (zero warnings — TreatWarningsAsErrors is on)
  • dotnet test passes locally
  • Manually exercised the changed code path:
    • <e.g. curl /api/v1/orders and observed expected response>
    • <e.g. published an OrderPlacedEvent and watched PaymentService consume it>
  • If this touches integration tests: ran the Testcontainers slice and confirmed Docker socket is reachable
  • If this touches AppHost: ran dotnet run --project NextAurora.AppHost and confirmed all services reach "Running" (not "Finished") in the dashboard

Deferred / known gaps [skip if N/A]

Linked docs / issues [skip if N/A]

Summary by CodeRabbit

  • Chores

    • CI now collects integration-test coverage and uploads integration reports to Codecov (non-fatal on upload errors)
    • Adjusted local tooling configuration to stop ingesting GitHub checks output
  • Documentation

    • Updated project status with new "Last updated" date and detailed notes on recent tooling/workflow and integration-test fixes
    • Clarified coverage baselines and next steps to incorporate integration-layer coverage into totals

Review Change Stack

emeraldleaf and others added 2 commits May 23, 2026 09:54
…exercise

The Codecov badge reads 18.28% because the previous CI setup only uploaded
unit-test coverage. The 58.5% baseline cited in CLAUDE.md / STATUS.md is the
*aggregated* number from reportgenerator (unit + integration combined).

Two changes to the integration-tests job:
1. Add --collect:"XPlat Code Coverage" to both `dotnet test` steps so Cobertura
   XML is emitted alongside the TRX results.
2. Add a codecov-action@v5 upload step flagged "integration" so the dashboard can
   distinguish unit vs integration contributions. Combined with the existing
   "unit" flag from the build job, the overall % reflects end-to-end coverage.

After this lands AND the OrderService integration hang fix from the previous
commit takes effect, the badge should read ~58% — the actual exercise level.
Until both land, the badge undersells the repo because integration tests can't
run to upload their coverage XMLs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…test fix

Updates STATUS.md after PR #15 (AI workflow tooling) merged and during the
follow-up fix PR for OrderService integration tests:

- Adds "Recently landed" bullet for PR #15 — the .claude/ + .github/ tooling
  buildout (hooks, slash commands, agent, 8 curated community skills,
  PR template, CodeRabbit, architecture map, Codecov badges).
- Adds "Recently landed" bullet for the OrderService integration test fix
  + the Codecov integration-coverage upload, with both root causes documented
  for the next person who steps on a similar trap.
- Updates "Build / test state": OrderService integration tests now actually
  verified green locally (4/4 in 16.2s) — they were written 9 days ago in
  commit 76b2f2f but never observed green in CI until today.
- Notes the Codecov 18% → ~58% transition that's expected once both this
  PR's commits land on main.
- Bumps the "Last updated" date.

The "architecture is built; most has not been runtime-verified" preamble
stays — still true in aggregate (cross-service E2E over real ASB wire is
still uncovered, no production perf baselines, AppHost smoke not fully
automated). One specific counterexample is now closed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 23, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: dfecb6e6-fb51-4249-b32f-0905fd331911

📥 Commits

Reviewing files that changed from the base of the PR and between 12a5071 and e99f56a.

📒 Files selected for processing (1)
  • docs/STATUS.md

Walkthrough

This PR adds integration test coverage collection to the CI workflow and documents the integration test verification status. The workflow now gathers Cobertura XML output during Catalog and Order integration test runs and uploads it to Codecov with the integration flag. Status documentation is updated to reflect verified integration test results and clarify the current coverage baseline.

Changes

Integration Test Coverage Reporting

Layer / File(s) Summary
Integration coverage collection and upload
.github/workflows/ci.yml
Both Catalog and Order integration test steps collect Cobertura XML coverage via --collect:"XPlat Code Coverage". A new Codecov upload step sends ./test-results/**/coverage.cobertura.xml with the integration flag and non-fatal failure handling.
Status documentation updates
docs/STATUS.md
Last-updated timestamp is refreshed to 2026-05-23. PR #15's AI-assisted workflow tooling and the resolution of OrderService integration test failures (ASB auto-provisioning disable, SQL Server teardown order fix) are documented. Integration test status is updated to report both Catalog and Order slices verified green, with coverage notes clarifying that the current Codecov badge represents unit tests only (18.28%) and integration coverage upload is in-flight.
Repository YAML schema and tools block removal
.coderabbit.yaml
Added a # yaml-language-server: $schema=... directive at the top and removed the tools configuration block (tools.github-checks) from the file.

🎯 2 (Simple) | ⏱️ ~12 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Fix/orderservice integration test hang' directly addresses the primary objective of the PR, which is fixing an OrderService integration test hang issue documented in the changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/orderservice-integration-test-hang

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov

codecov Bot commented May 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Line 175: Replace the mutable action tag used in the workflow step that
currently reads "uses: codecov/codecov-action@v5" with an immutable commit SHA;
find the CI workflow step referencing codecov/codecov-action and change the uses
value to the action's pinned commit (e.g.,
codecov/codecov-action@<full-commit-sha> obtained from the action repo) so the
workflow is pinned to a specific immutable release.

In `@docs/STATUS.md`:
- Line 70: The current sentence starting "**Coverage** — Codecov badge currently
18.28% (unit-tests only)..." still says the integration upload is "in-flight";
update that sentence to state the integration-tests Codecov upload is now
configured by this PR and that the badge/aggregate will reflect the new combined
coverage after the next successful CI run, while noting that the badge currently
reflects unit-tests only unless the integration upload has completed and that
the expected aggregate will be ~58% once the integration coverage is processed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 538357b4-2652-4146-8e47-0d8553da8f9b

📥 Commits

Reviewing files that changed from the base of the PR and between fd27fd1 and 99a6699.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • docs/STATUS.md

Comment thread .github/workflows/ci.yml
# reportgenerator's aggregation in CLAUDE.md).
- name: Upload integration coverage to Codecov
if: ${{ !cancelled() }}
uses: codecov/codecov-action@v5

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify all GitHub Actions references and identify unpinned ones.
rg -nP '^\s*uses:\s*[^@]+@([A-Za-z0-9_.-]+)\s*$' .github/workflows/*.yml \
  | rg -nPv '@[0-9a-fA-F]{40}\b'

Repository: emeraldleaf/NextAurora

Length of output: 1289


Pin codecov/codecov-action to an immutable commit SHA

.github/workflows/ci.yml:175 uses the mutable tag codecov/codecov-action@v5, which is a supply-chain risk under action-pinning rules.

Suggested change
-        uses: codecov/codecov-action@v5
+        uses: codecov/codecov-action@<FULL_LENGTH_COMMIT_SHA> # v5
🧰 Tools
🪛 zizmor (1.25.2)

[error] 175-175: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 175, Replace the mutable action tag used in
the workflow step that currently reads "uses: codecov/codecov-action@v5" with an
immutable commit SHA; find the CI workflow step referencing
codecov/codecov-action and change the uses value to the action's pinned commit
(e.g., codecov/codecov-action@<full-commit-sha> obtained from the action repo)
so the workflow is pinned to a specific immutable release.

Comment thread docs/STATUS.md Outdated
emeraldleaf and others added 2 commits May 23, 2026 11:17
CodeRabbit's first-pass run flagged: "Validation error: Unrecognized key(s) in
object: 'tools'". The block I added in PR #15 was speculative — that schema
shape (tools.github-checks.enabled / timeout_ms) is not part of the current
.coderabbit.yaml v2 schema. CodeRabbit was silently ignoring it.

Also adds the schema annotation `# yaml-language-server: $schema=...` at the
top so editors with YAML language-server support get auto-completion +
validation feedback on future edits, catching this kind of speculative-shape
drift at edit time instead of first-run time.

Behavioral change: none. Removing the ignored block changes nothing about
how CodeRabbit reviews; per-path instructions and chat auto-reply are intact.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CodeRabbit (PR #17) flagged that the "in-flight PR" phrasing goes stale the
moment this PR merges. Reword to describe the configured state (upload is in
ci.yml) and the pending event (badge reflects aggregate after the next green
CI run), not the temporal state of this PR.

Addresses CodeRabbit finding #2 of 2 on the PR. Finding #1 (pin codecov-action
to commit SHA) deferred — would create inconsistency with the other six actions
in the same workflow (actions/checkout@v6, actions/setup-dotnet@v5,
actions/cache@v5, dorny/test-reporter@v3, github/codeql-action/*@v4, plus the
two codecov-action calls), all of which use version-pinned mutable tags by
existing repo convention. If we want SHA-pinning, it's a workflow-wide
hardening pass, not a one-off here.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@emeraldleaf emeraldleaf merged commit d0cc6ca into main May 23, 2026
6 checks passed
emeraldleaf added a commit that referenced this pull request May 23, 2026
PR #17 (fix/orderservice-integration-test-hang) merged 2026-05-23 17:56 UTC.
The STATUS.md text I added in that PR had forward-looking phrasing ("this PR,
in flight", "will reflect ... after the next successful CI run", "CI
confirmation pending the fix PR merge") that goes stale the moment the PR
lands. Rewording to describe present state:

- OrderService integration test bullet: cite the merge (PR #17) and the
  first-green CI timestamp + per-step durations (Catalog 58s, Order 40s).
- Codecov sub-bullet: cite the measured delta (18.28% → 56.14%) instead of
  the expected aggregate.
- Build/test state: drop "Local run / CI pending" duality — both pass now.
- Coverage line: state the current badge value, not a future expectation.

Also catches one older stale entry: the EF Core review + fixes bullet still
said "(this session, uncommitted)" — that work landed in 825d6bd already.
Replaced with the commit hash for findability.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@coderabbitai coderabbitai Bot mentioned this pull request May 23, 2026
emeraldleaf added a commit that referenced this pull request May 23, 2026
* docs(dev-loop): inventory all tooling + visual workflow + honest gap analysis

Three new files in docs/:

- dev-loop.md (markdown inventory) — every tool, hook, agent, skill, and
  config that shapes how code lands in this repo, organized by *when* in
  the dev loop it fires (5 stages: Edit-time, Build-time, Test-time,
  PR-time, Merge/Runtime). For each tool: file path so a reader can
  verify it actually exists.

- dev-loop.svg (visual companion) — the same 5-stage flow as a left-to-right
  diagram with per-stage tool detail and a dotted-loop arrow showing review
  iteration. Hand-written SVG (not generated via Playwright — the excalidraw
  render script hit a 30s+ timeout loading the esm.sh ES module repeatedly
  in this environment).

- dev-loop.excalidraw (editable source) — the highway skeleton in Excalidraw
  format. Open in Excalidraw web/desktop or the VS Code Excalidraw extension
  to extend; export as SVG to refresh dev-loop.svg.

Gap analysis is the load-bearing part of the doc. Each gap (10 total —
cross-service E2E, perf baselines, settings.json cruft, SHA-pinning,
coverage gate, smoke-run automation, secret scanning, prod migrations,
agent-vs-CodeRabbit overlap, AI-commit-tagging) is paired with a sized
pragmatic fix — explicitly not "build a whole new system." The signal
this doc tries to send is: knowing when to stop adding tooling is
more pragmatic than maximum theoretical coverage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs(status): freshness pass after PR #17 merge

PR #17 (fix/orderservice-integration-test-hang) merged 2026-05-23 17:56 UTC.
The STATUS.md text I added in that PR had forward-looking phrasing ("this PR,
in flight", "will reflect ... after the next successful CI run", "CI
confirmation pending the fix PR merge") that goes stale the moment the PR
lands. Rewording to describe present state:

- OrderService integration test bullet: cite the merge (PR #17) and the
  first-green CI timestamp + per-step durations (Catalog 58s, Order 40s).
- Codecov sub-bullet: cite the measured delta (18.28% → 56.14%) instead of
  the expected aggregate.
- Build/test state: drop "Local run / CI pending" duality — both pass now.
- Coverage line: state the current badge value, not a future expectation.

Also catches one older stale entry: the EF Core review + fixes bullet still
said "(this session, uncommitted)" — that work landed in 825d6bd already.
Replaced with the commit hash for findability.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs(dev-loop): resolve placeholder [text](#) markdown links

CodeRabbit (PR #20) flagged two empty markdown links — perf-baselines.md
and codecov.yml — both rendered as [text](#) because the referenced files
don't exist yet (they're future-work suggestions in the gap analysis).

MD042 (no-empty-links) violation. Fix is dropping the link syntax and
calling out parenthetically that the file isn't yet created — keeps the
prose readable without producing a clickable "#" link that goes nowhere.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@emeraldleaf emeraldleaf deleted the fix/orderservice-integration-test-hang branch June 4, 2026 00:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant