docs(sports): record where B6 stands, and why it is waiting - #435
docs(sports): record where B6 stands, and why it is waiting#435ChuckBuilds wants to merge 2 commits into
Conversation
The phase table had B4 as "next" and B5 as "after B4" while both had shipped,
and described B6 as blocked on B4's gate — which is now merged and released. A
plan that misreports which phase it is in is worse than no plan: the next
person reads it and repeats finished work.
Corrected, and three things that were only ever decided in conversation are now
written down:
* **B6 is deliberately held.** 3.2.0 published 2026-08-03; 3.1.0 ran nine
months before it. B6's premise is that cores without the module are gone,
and there is no release-asset count or install telemetry to show that.
Running it now strands users on their current plugin versions. The gate
that makes it safe is already built and tested — it is the calendar that is
missing, and no amount of further code changes that.
* **Stop adopting further shared modules** (data_sources, game_renderer,
base_odds_manager) until B6 closes. Each adoption adds a copy to keep in
step against a payoff contingent on B6.
* **A B5 retrospective**, because "the adoption went fine" is not what
happened: four of eight shipped with scroll mode broken on a 3.2.0 core.
The bundled fallback did not protect against it — the break was on the
modern path — which is an argument for the sunset, not against it. Records
the ledger too: net negative on disk until B6 runs.
Also replaces the "what's next" list, whose first five items were all done,
with what actually remains.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Udr6MfaFLUPhX5Fgo67Jf5
📝 WalkthroughWalkthroughThe rollout documentation now records B4 and B5 completion, keeps B6 blocked pending 3.2.0 adoption evidence, documents B5 defects and corrective validation, and lists the remaining work. ChangesSports unification rollout
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
Up to standards ✅🟢 Issues
|
There was a problem hiding this comment.
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 `@docs/SPORTS_UNIFICATION.md`:
- Around line 361-367: Update the earlier B5 safety claim in
docs/SPORTS_UNIFICATION.md to promise only fallback compatibility on cores
without the shared module, not immunity from runtime regressions during
adoption. Retain the documented requirement for object-level and scroll-mode
validation to verify full behavior.
- Line 409: Fix the ATX heading syntax in the documentation around the manifest
entry text by adding the required space after the heading marker, preserving the
existing heading content.
🪄 Autofix
✅ Autofix completed
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: a54a3e92-1a8b-4421-bb8f-67ad616495e4
📒 Files selected for processing (1)
docs/SPORTS_UNIFICATION.md
| **Four of the eight shipped with scroll mode broken** on a 3.2.0 core, and were | ||
| repaired in plugins-repo #251. The restructure lifted the content methods | ||
| verbatim but left the state they read off `self` behind: separator-icon | ||
| constants (hockey, basketball, lacrosse) and the game-renderer cache (afl). | ||
| hockey/basketball/lacrosse could not construct the scroll display at all; afl | ||
| raised inside `prepare_scroll_content`, which the core base *catches*, so its | ||
| only symptom was scroll mode silently drawing nothing. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Limit the B5 safety claim to fallback compatibility.
This retrospective states that four adopted plugins shipped with broken scroll mode on a 3.2.0 core. That conflicts with the earlier claim that no adoption step can break a user. Rename or qualify that claim so it guarantees only fallback behavior on cores without the shared module. Full runtime behavior still requires object-level and scroll-mode validation.
🤖 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 `@docs/SPORTS_UNIFICATION.md` around lines 361 - 367, Update the earlier B5
safety claim in docs/SPORTS_UNIFICATION.md to promise only fallback
compatibility on cores without the shared module, not immunity from runtime
regressions during adoption. Retain the documented requirement for object-level
and scroll-mode validation to verify full behavior.
| Steps 1–5 of the original plan are **done**: 3.2.0 is tagged and published with | ||
| a version number CI now asserts (#428), the compatibility gate is in | ||
| `install_plugin` and reads `compatible_versions` as well as the floor (#431, | ||
| #433), the newest manifest entry is required to use `ledmatrix_min_version` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
sed -n '404,412p' docs/SPORTS_UNIFICATION.md
markdownlint-cli2 docs/SPORTS_UNIFICATION.mdRepository: ChuckBuilds/LEDMatrix
Length of output: 9028
Add the missing space to the ATX heading on line 409.
markdownlint-cli2 reports MD018 for line 409 (#433), the newest manifest ent...). Change it to #433) so it is valid Markdown heading syntax.
🧰 Tools
🪛 markdownlint-cli2 (0.23.2)
[warning] 409-409: No space after hash on atx style heading
(MD018, no-missing-space-atx)
🤖 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 `@docs/SPORTS_UNIFICATION.md` at line 409, Fix the ATX heading syntax in the
documentation around the manifest entry text by adding the required space after
the heading marker, preserving the existing heading content.
Source: Linters/SAST tools
Fixes Applied SuccessfullyFixed 1 file(s) based on 2 unresolved review comments. Files modified:
Commit: The changes have been pushed to the Time taken: |
Fixed 1 file(s) based on 2 unresolved review comments. Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
The phase table had B4 as "next" and B5 as "after B4" while both had shipped, and described B6 as blocked on B4's gate — which is now merged and released. A plan that misreports which phase it is in is worse than no plan: the next person reads it and repeats finished work.
Corrected, and three things that were only ever decided in conversation are now written down.
B6 is deliberately held
3.2.0 was published 2026-08-03; 3.1.0 ran nine months before it. B6's premise is that cores without
src.common.sports_scrollare gone, and there is no release-asset count or install telemetry to demonstrate that. Running it now strands users on their current plugin versions.The gate that makes B6 safe is already built and tested — it refuses installs whose floor exceeds the core version, and refuses floors above 2.0.0 on a core reporting an untrustworthy version. It is the calendar that is missing, and no amount of further code changes that. Also records the traps for whoever runs it: four plugins declare their floor top-level where editing
versions[0]is a silent no-op, and the floor has three live spellings.Stop adopting further shared modules
data_sources.py(9 copies),game_renderer.py(8),base_odds_manager.py. Each adoption adds a second copy to keep in step against a payoff contingent on B6.A B5 retrospective
Because "the adoption went fine" is not what happened — four of eight plugins shipped with scroll mode broken on a 3.2.0 core (repaired in plugins #251, tidied in #252). Three points worth carrying forward:
self.NHL_SEPARATOR_ICONis an attribute read. The fix was to stop reasoning about source and build the object.target_fps).Also replaces the "what's next" list, whose first five items were all done, with what actually remains: the stale plugin-test tranche, hardware soaks for the six unsoaked adoptions, and a
CLAUDE.mdpanel-size fix.Documentation only — no code changes.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Udr6MfaFLUPhX5Fgo67Jf5
Summary by CodeRabbit