Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 64 additions & 1 deletion codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ coverage:
# async tests can shift counters by a fraction of a percent run to
# run, and a strict zero-tolerance gate would just teach reviewers
# to ignore the check.
target: auto
target: 75%
threshold: 1%
informational: true
patch:
Expand Down Expand Up @@ -52,41 +52,104 @@ ignore:
- "**/build.rs"
- "**/tests/**" # test code itself
- "**/*_tests.rs"
# Binary entry points where assertion-style tests are not idiomatic.
- "crates/server/src/main.rs"
- "crates/supervisor/src/main.rs"
- "crates/upk-objects/src/bin/**"
- "crates/upk/src/bin/**"
# Deferred per issue #205 (fixture cost exceeds value-per-line)
- "crates/services/src/base/connect_loop.rs"
- "crates/services/src/base/cooked_data.rs"
- "crates/services/src/base/dispatch.rs"
- "crates/services/src/minigame/server.rs"

# Components let the PR comment break coverage out by subsystem. Mirrors
# the crate dependency graph in README.md so reviewers can see "the
# mercury delta is +2.1%, the services delta is -0.4%" at a glance.
component_management:
# Fallback for components listed under `paths:` below without an explicit
# `statuses:` override. Every component currently overrides, so this only
# kicks in for future additions.
default_rules:
statuses:
- type: project
target: auto
threshold: 1%
informational: true
individual_components:
- component_id: mercury
name: mercury
paths:
- "crates/mercury/**"
statuses:
- type: project
target: 92%
informational: true
- component_id: services
name: services
paths:
- "crates/services/**"
statuses:
- type: project
target: 62%
informational: true
- component_id: content-engine
name: content-engine
paths:
- "crates/content-engine/**"
statuses:
- type: project
target: 82%
informational: true
- component_id: entity
name: entity
paths:
- "crates/entity/**"
statuses:
- type: project
target: 88%
informational: true
- component_id: game
name: game
paths:
- "crates/game/**"
statuses:
- type: project
target: 80%
informational: true
- component_id: defs
name: defs
paths:
- "crates/defs/**"
statuses:
- type: project
target: 84%
informational: true
- component_id: common
name: common
paths:
- "crates/common/**"
statuses:
- type: project
target: 98%
informational: true
- component_id: commands
name: commands
paths:
- "crates/commands/**"
statuses:
- type: project
target: 92%
informational: true
Comment on lines +84 to +143
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 | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

# First, let's read the full codecov.yml file to understand the structure
git ls-files codecov.yml

Repository: SandboxServers/Cimmeria

Length of output: 79


🏁 Script executed:

# Read the codecov.yml file to see the full context
cat -n codecov.yml

Repository: SandboxServers/Cimmeria

Length of output: 6069


🌐 Web query:

Codecov component_management statuses threshold inheritance deep merge

💡 Result:

In Codecov's codecov.yml configuration, the component_management section defines components for grouping coverage data by paths or flags, with support for statuses (including thresholds) that control commit status checks [1][2]. The default_rules under component_management provide rules (paths, flag_regexes, statuses) inherited by all components that do not define those fields themselves [1][2]. Individual components in individual_components inherit from default_rules but can override specific fields like statuses; if a component omits statuses, it uses those from default_rules [2]. Statuses are lists of status definitions (e.g., type: project, target: auto, threshold: 1%) similar to flag_management statuses but without 'flags' [1]. If an individual component defines its own statuses list, it replaces the default_rules statuses entirely rather than merging; no explicit deep merge for statuses lists is documented, following standard YAML override behavior where presence overrides inheritance [2]. Thresholds are set within status objects (e.g., threshold: 5%) [3]. Examples show components without statuses inheriting project status from default_rules, while others define custom lists [2].

Citations:


Add threshold: 1% to all per-component status checks

Individual components override default_rules.statuses entirely rather than merging with them. Each of the 8 components defined in individual_components (mercury, services, content-engine, entity, game, defs, common, commands) omits the threshold: 1% field, which means those components won't inherit the stated 1% drift tolerance from default_rules. This results in stricter checks that increase PR noise and contradict the intent documented at the top of the file. The admin-api component correctly includes explicit threshold: 1% and serves as the model.

Required changes
     - component_id: mercury
       name: mercury
       paths:
         - "crates/mercury/**"
       statuses:
         - type: project
           target: 92%
+          threshold: 1%
           informational: true
     - component_id: services
       name: services
       paths:
         - "crates/services/**"
       statuses:
         - type: project
           target: 62%
+          threshold: 1%
           informational: true
     - component_id: content-engine
       name: content-engine
       paths:
         - "crates/content-engine/**"
       statuses:
         - type: project
           target: 82%
+          threshold: 1%
           informational: true
     - component_id: entity
       name: entity
       paths:
         - "crates/entity/**"
       statuses:
         - type: project
           target: 88%
+          threshold: 1%
           informational: true
     - component_id: game
       name: game
       paths:
         - "crates/game/**"
       statuses:
         - type: project
           target: 80%
+          threshold: 1%
           informational: true
     - component_id: defs
       name: defs
       paths:
         - "crates/defs/**"
       statuses:
         - type: project
           target: 84%
+          threshold: 1%
           informational: true
     - component_id: common
       name: common
       paths:
         - "crates/common/**"
       statuses:
         - type: project
           target: 98%
+          threshold: 1%
           informational: true
     - component_id: commands
       name: commands
       paths:
         - "crates/commands/**"
       statuses:
         - type: project
           target: 92%
+          threshold: 1%
           informational: true
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
statuses:
- type: project
target: 92%
informational: true
- component_id: services
name: services
paths:
- "crates/services/**"
statuses:
- type: project
target: 62%
informational: true
- component_id: content-engine
name: content-engine
paths:
- "crates/content-engine/**"
statuses:
- type: project
target: 82%
informational: true
- component_id: entity
name: entity
paths:
- "crates/entity/**"
statuses:
- type: project
target: 88%
informational: true
- component_id: game
name: game
paths:
- "crates/game/**"
statuses:
- type: project
target: 80%
informational: true
- component_id: defs
name: defs
paths:
- "crates/defs/**"
statuses:
- type: project
target: 84%
informational: true
- component_id: common
name: common
paths:
- "crates/common/**"
statuses:
- type: project
target: 98%
informational: true
- component_id: commands
name: commands
paths:
- "crates/commands/**"
statuses:
- type: project
target: 92%
informational: true
statuses:
- type: project
target: 92%
threshold: 1%
informational: true
- component_id: services
name: services
paths:
- "crates/services/**"
statuses:
- type: project
target: 62%
threshold: 1%
informational: true
- component_id: content-engine
name: content-engine
paths:
- "crates/content-engine/**"
statuses:
- type: project
target: 82%
threshold: 1%
informational: true
- component_id: entity
name: entity
paths:
- "crates/entity/**"
statuses:
- type: project
target: 88%
threshold: 1%
informational: true
- component_id: game
name: game
paths:
- "crates/game/**"
statuses:
- type: project
target: 80%
threshold: 1%
informational: true
- component_id: defs
name: defs
paths:
- "crates/defs/**"
statuses:
- type: project
target: 84%
threshold: 1%
informational: true
- component_id: common
name: common
paths:
- "crates/common/**"
statuses:
- type: project
target: 98%
threshold: 1%
informational: true
- component_id: commands
name: commands
paths:
- "crates/commands/**"
statuses:
- type: project
target: 92%
threshold: 1%
informational: true
🤖 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 `@codecov.yml` around lines 84 - 143, Each per-component statuses block (for
component_id values mercury, services, content-engine, entity, game, defs,
common, and commands) is missing the explicit "threshold: 1%" setting and
therefore overrides default_rules.statuses; update each component's statuses
entry to include threshold: 1% alongside the existing type/project and
informational fields so they inherit the intended 1% drift tolerance (follow the
admin-api component as the model).

# admin-api currently has no tests — keep `target: auto` so the per-PR
# comment doesn't shout "0% (target 50%)" on every PR. Ratchet to 50%
# once the tier-1 admin-api tests land.
- component_id: admin-api
name: admin-api
paths:
- "crates/admin-api/**"
statuses:
- type: project
target: auto
threshold: 1%
informational: true
Loading