]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
docs(reforcexy): update tests documentation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 13 Nov 2025 21:22:21 +0000 (22:22 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Thu, 13 Nov 2025 21:22:21 +0000 (22:22 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
ReforceXY/reward_space_analysis/pyproject.toml
ReforceXY/reward_space_analysis/tests/README.md

index 5e58647e23b055aaf4625b9ec0908df19ab81952..45f00bd3ada8fc3a2ed217b8be3e8bde6e3e305b 100644 (file)
@@ -42,7 +42,6 @@ python_functions = [
 ]
 markers = [
     "components: component-level reward computations",
-    "transforms: transform logic within components",
     "robustness: stress and edge-case behavior",
     "api: public API surface and helpers",
     "cli: command-line interface behaviors",
index e7b65672c78f7d6b2778e6eca901cfaedd70d088..3f4d554d74ad039855c2e36741962bb17798dd0a 100644 (file)
@@ -20,7 +20,6 @@ Single ownership per invariant is tracked in the Coverage Mapping section of thi
 | Directory      | Marker      | Scope                                       |
 | -------------- | ----------- | ------------------------------------------- |
 | `components/`  | components  | Component math & transforms                 |
-| `transforms/`  | transforms  | Transform function behavior                 |
 | `robustness/`  | robustness  | Edge cases, stability, progression          |
 | `api/`         | api         | Public API helpers & parsing                |
 | `cli/`         | cli         | CLI parameter propagation & artifacts       |
@@ -65,36 +64,34 @@ uv run pytest -m "statistics and slow" -q
 
 Columns:
 
-- ID: Stable identifier (`<category>-<shortname>-NNN`) or numeric-only legacy (statistics block).
+- ID: Stable identifier (`<category>-<shortname>-NNN`).
 - Category: Taxonomy directory marker.
 - Description: Concise invariant statement.
 - Owning File: Path:line of primary declaration (prefer comment line `# Owns invariant:` when present; otherwise docstring line).
 - Notes: Clarifications (sub-modes, extensions, non-owning references elsewhere, line clusters for multi-path coverage).
 
-| ID                                           | Category    | Description                                                                         | Owning File                             | Notes                                                                                        |
-| -------------------------------------------- | ----------- | ----------------------------------------------------------------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------- |
-| report-abs-shaping-line-091                  | integration | Abs Σ Shaping Reward line present & formatted                                       | integration/test_report_formatting.py:4 | PBRS report may render line; formatting owned here (core assertion lines 84–103)             |
-| report-additives-deterministic-092           | components  | Additives deterministic report section                                              | components/test_additives.py:4          | Integration/PBRS may reference outcome non-owning                                            |
-| robustness-decomposition-integrity-101       | robustness  | Single active core component equals total reward under mutually exclusive scenarios | robustness/test_robustness.py:35        | Scenarios: idle, hold, exit, invalid; non-owning refs integration/test_reward_calculation.py |
-| robustness-exit-mode-fallback-102            | robustness  | Unknown exit_attenuation_mode falls back to linear w/ warning                       | robustness/test_robustness.py:519       | Comment line (function at :520)                                                              |
-| robustness-negative-grace-clamp-103          | robustness  | Negative exit_plateau_grace clamps to 0.0 w/ warning                                | robustness/test_robustness.py:549       |                                                                                              |
-| robustness-invalid-power-tau-104             | robustness  | Invalid power tau falls back alpha=1.0 w/ warning                                   | robustness/test_robustness.py:586       | Line updated (was 585)                                                                       |
-| robustness-near-zero-half-life-105           | robustness  | Near-zero half life yields no attenuation (factor≈base)                             | robustness/test_robustness.py:615       | Line updated (was 613)                                                                       |
-| pbrs-canonical-drift-correction-106          | pbrs        | Canonical drift correction enforces near zero-sum shaping                           | pbrs/test_pbrs.py:447                   | Multi-path: extension fallback (475), comparison path (517)                                  |
-| pbrs-canonical-near-zero-report-116          | pbrs        | Canonical near-zero cumulative shaping classification                               | pbrs/test_pbrs.py:747                   | Full report classification                                                                   |
-| statistics-partial-deps-skip-107             | statistics  | skip_partial_dependence => empty PD structures                                      | statistics/test_statistics.py:28        | Docstring line                                                                               |
-| helpers-duplicate-rows-drop-108              | helpers     | Duplicate rows dropped w/ warning counting removals                                 | helpers/test_utilities.py:26            | Docstring line                                                                               |
-| helpers-missing-cols-fill-109                | helpers     | Missing required columns filled with NaN + single warning                           | helpers/test_utilities.py:50            | Docstring line                                                                               |
-| statistics-binned-stats-min-edges-110        | statistics  | <2 bin edges raises ValueError                                                      | statistics/test_statistics.py:45        | Docstring line                                                                               |
-| statistics-constant-cols-exclusion-111       | statistics  | Constant columns excluded & listed                                                  | statistics/test_statistics.py:57        | Docstring line                                                                               |
-| statistics-degenerate-distribution-shift-112 | statistics  | Degenerate dist: zero shift metrics & KS p=1.0                                      | statistics/test_statistics.py:74        | Docstring line                                                                               |
-| statistics-constant-dist-widened-ci-113a     | statistics  | Non-strict: widened CI with warning                                                 | statistics/test_statistics.py:529       | Test docstring labels "Invariant 113 (non-strict)"                                           |
-| statistics-constant-dist-strict-omit-113b    | statistics  | Strict: omit metrics (no widened CI)                                                | statistics/test_statistics.py:562       | Test docstring labels "Invariant 113 (strict)"                                               |
-| statistics-fallback-diagnostics-115          | statistics  | Fallback diagnostics constant distribution (qq_r2=1.0 etc.)                         | statistics/test_statistics.py:190       | Docstring line                                                                               |
-| robustness-exit-pnl-only-117                 | robustness  | Only exit actions have non-zero PnL                                                 | robustness/test_robustness.py:125       | Newly assigned ID (previously unnumbered)                                                    |
-| pbrs-absence-shift-placeholder-118           | pbrs        | Placeholder shift line present (absence displayed)                                  | pbrs/test_pbrs.py:975                   | Ensures placeholder appears when shaping shift absent                                        |
-
-Note: `transforms/` directory has no owned invariants; future transform-specific invariants should follow the ID pattern and be added here before test implementation.
+| ID                                           | Category    | Description                                                                         | Owning File                             | Notes                                                                                                                       |
+| -------------------------------------------- | ----------- | ----------------------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
+| report-abs-shaping-line-091                  | integration | Abs Σ Shaping Reward line present & formatted                                       | integration/test_report_formatting.py:4 | Module docstring; primary test at line 84. PBRS report may render line; formatting owned here (core assertion lines 84–103) |
+| report-additives-deterministic-092           | components  | Additives deterministic report section                                              | components/test_additives.py:4          | Integration/PBRS may reference outcome non-owning                                                                           |
+| robustness-decomposition-integrity-101       | robustness  | Single active core component equals total reward under mutually exclusive scenarios | robustness/test_robustness.py:36        | Scenarios: idle, hold, exit, invalid; non-owning refs integration/test_reward_calculation.py                                |
+| robustness-exit-mode-fallback-102            | robustness  | Unknown exit_attenuation_mode falls back to linear w/ warning                       | robustness/test_robustness.py:525       | Comment line (function at :526)                                                                                             |
+| robustness-negative-grace-clamp-103          | robustness  | Negative exit_plateau_grace clamps to 0.0 w/ warning                                | robustness/test_robustness.py:555       |                                                                                                                             |
+| robustness-invalid-power-tau-104             | robustness  | Invalid power tau falls back alpha=1.0 w/ warning                                   | robustness/test_robustness.py:592       |                                                                                                                             |
+| robustness-near-zero-half-life-105           | robustness  | Near-zero half life yields no attenuation (factor≈base)                             | robustness/test_robustness.py:621       |                                                                                                                             |
+| pbrs-canonical-drift-correction-106          | pbrs        | Canonical drift correction enforces near zero-sum shaping                           | pbrs/test_pbrs.py:449                   | Multi-path: extension fallback (475), comparison path (517)                                                                 |
+| pbrs-canonical-near-zero-report-116          | pbrs        | Canonical near-zero cumulative shaping classification                               | pbrs/test_pbrs.py:748                   | Full report classification                                                                                                  |
+| statistics-partial-deps-skip-107             | statistics  | skip_partial_dependence => empty PD structures                                      | statistics/test_statistics.py:28        | Docstring line                                                                                                              |
+| helpers-duplicate-rows-drop-108              | helpers     | Duplicate rows dropped w/ warning counting removals                                 | helpers/test_utilities.py:26            | Docstring line                                                                                                              |
+| helpers-missing-cols-fill-109                | helpers     | Missing required columns filled with NaN + single warning                           | helpers/test_utilities.py:50            | Docstring line                                                                                                              |
+| statistics-binned-stats-min-edges-110        | statistics  | <2 bin edges raises ValueError                                                      | statistics/test_statistics.py:45        | Docstring line                                                                                                              |
+| statistics-constant-cols-exclusion-111       | statistics  | Constant columns excluded & listed                                                  | statistics/test_statistics.py:57        | Docstring line                                                                                                              |
+| statistics-degenerate-distribution-shift-112 | statistics  | Degenerate dist: zero shift metrics & KS p=1.0                                      | statistics/test_statistics.py:74        | Docstring line                                                                                                              |
+| statistics-constant-dist-widened-ci-113a     | statistics  | Non-strict: widened CI with warning                                                 | statistics/test_statistics.py:533       | Test docstring labels "Invariant 113 (non-strict)"                                                                          |
+| statistics-constant-dist-strict-omit-113b    | statistics  | Strict: omit metrics (no widened CI)                                                | statistics/test_statistics.py:565       | Test docstring labels "Invariant 113 (strict)"                                                                              |
+| statistics-fallback-diagnostics-115          | statistics  | Fallback diagnostics constant distribution (qq_r2=1.0 etc.)                         | statistics/test_statistics.py:190       | Docstring line                                                                                                              |
+| robustness-exit-pnl-only-117                 | robustness  | Only exit actions have non-zero PnL                                                 | robustness/test_robustness.py:126       | Newly assigned ID (previously unnumbered)                                                                                   |
+| pbrs-absence-shift-placeholder-118           | pbrs        | Placeholder shift line present (absence displayed)                                  | pbrs/test_pbrs.py:979                   | Ensures placeholder appears when shaping shift absent                                                                       |
 
 ### Non-Owning Smoke / Reference Checks
 
@@ -108,15 +105,15 @@ Table tracks approximate line ranges and source ownership:
 
 | File                                   | Lines (approx) | References                                               | Ownership Source                                                    |
 | -------------------------------------- | -------------- | -------------------------------------------------------- | ------------------------------------------------------------------- |
-| integration/test_reward_calculation.py | 15-22          | Decomposition identity (sum components)                  | robustness/test_robustness.py:35                                    |
+| integration/test_reward_calculation.py | 15-22          | Decomposition identity (sum components)                  | robustness/test_robustness.py:36                                    |
 | components/test_reward_components.py   | 212-242        | Exit factor finiteness & plateau behavior                | robustness/test_robustness.py:156+                                  |
-| pbrs/test_pbrs.py                      | 591-630        | Canonical vs non-canonical classification formatting     | robustness/test_robustness.py:35, robustness/test_robustness.py:125 |
+| pbrs/test_pbrs.py                      | 591-630        | Canonical vs non-canonical classification formatting     | robustness/test_robustness.py:36, robustness/test_robustness.py:126 |
 | pbrs/test_pbrs.py                      | 616,624,799    | Abs Σ Shaping Reward line formatting                     | integration/test_report_formatting.py:84-103                        |
-| pbrs/test_pbrs.py                      | 742-806        | Canonical near-zero cumulative shaping classification    | robustness/test_robustness.py:35                                    |
-| pbrs/test_pbrs.py                      | 807-860        | Canonical warning classification (Σ shaping > tolerance) | robustness/test_robustness.py:35                                    |
-| pbrs/test_pbrs.py                      | 861-915        | Non-canonical full report reason aggregation             | robustness/test_robustness.py:35                                    |
-| pbrs/test_pbrs.py                      | 916-969        | Non-canonical mode-only reason (additives disabled)      | robustness/test_robustness.py:35                                    |
-| statistics/test_statistics.py          | 292            | Mean decomposition consistency                           | robustness/test_robustness.py:35                                    |
+| pbrs/test_pbrs.py                      | 742-806        | Canonical near-zero cumulative shaping classification    | robustness/test_robustness.py:36                                    |
+| pbrs/test_pbrs.py                      | 807-860        | Canonical warning classification (Σ shaping > tolerance) | robustness/test_robustness.py:36                                    |
+| pbrs/test_pbrs.py                      | 861-915        | Non-canonical full report reason aggregation             | robustness/test_robustness.py:36                                    |
+| pbrs/test_pbrs.py                      | 916-969        | Non-canonical mode-only reason (additives disabled)      | robustness/test_robustness.py:36                                    |
+| statistics/test_statistics.py          | 292            | Mean decomposition consistency                           | robustness/test_robustness.py:36                                    |
 
 ### Deprecated / Reserved IDs