|
| 1 | +# PR_26175_ALFA_010-status-bar-replacement-review |
| 2 | + |
| 3 | +## Purpose |
| 4 | + |
| 5 | +Determine whether GitHub PR #133 fully supersedes GitHub PR #120 for the shared toolbox selected-game status bar. |
| 6 | + |
| 7 | +This PR is report-only. It does not merge PRs, close PRs, delete branches, or modify runtime code. |
| 8 | + |
| 9 | +## GitHub Authority Snapshot |
| 10 | + |
| 11 | +| PR | Title | State | Draft | Mergeable | Base | Head | |
| 12 | +| --- | --- | --- | --- | --- | --- | --- | |
| 13 | +| #120 | `[codex] PR_26175_ALFA_003 toolbox status bar single row polish` | open | yes | no | `main` at `6d94477bb0ae9f63dd1466dbb89e4a437b8749b0` | `codex/pr-26175-alfa-003-toolbox-status-bar-single-row-polish` at `8a4ab291b9b948e3fe93a4359376bab7f1886dea` | |
| 14 | +| #133 | `PR_26175_ALFA_009-status-bar-single-row-rebuild` | open | yes | yes | `main` at `5415f6675d7a0f10931b83368948a83df98d8021` | `codex/pr-26175-alfa-009-status-bar-single-row-rebuild` at `025aac91acb67565ae92de8fad4def6135ce85b5` | |
| 15 | + |
| 16 | +## Executive Answer |
| 17 | + |
| 18 | +Recommendation: **Close #120 and merge #133**. |
| 19 | + |
| 20 | +#133 should replace #120. It carries the same intended creator-facing status bar behavior from #120, rebuilds it on current `main`, and is mergeable while #120 is stale and not mergeable. No creator-visible behavior appears lost. |
| 21 | + |
| 22 | +Nuance: #133 does not preserve #120's exact fullscreen reserve implementation or exact reserve-equality Playwright assertion. #120 used `margin-block-end: var(--toolbox-status-bar-height)` on `.tool-center-panel` and asserted that reserve equaled the status bar height. #133 instead reserves space through fullscreen workspace and column sizing, including the platform-banner top reserve, and validates the observable behavior that the center panel stops above the fixed status bar. This is an implementation and validation-shape change, not a visible behavior loss. |
| 23 | + |
| 24 | +## 1. Files Changed Comparison |
| 25 | + |
| 26 | +| File | PR #120 | PR #133 | Comparison | |
| 27 | +| --- | --- | --- | --- | |
| 28 | +| `assets/theme-v2/js/toolbox-status-bar.js` | Changed | Changed | Same behavior: removes visible labels, purpose text, context pill, and action link; leaves selected-game name and status message; keeps non-visible `data-toolbox-status-context-kind`. | |
| 29 | +| `assets/theme-v2/css/status.css` | Changed | Changed | Same visible status bar behavior. Difference: #133 replaces #120's center-panel margin reserve with workspace/column height reserves and includes top-reserve handling on columns. | |
| 30 | +| `assets/theme-v2/css/layout.css` | Changed | Changed | Same change: shared footer top padding becomes `0px` while bottom padding remains. | |
| 31 | +| `tests/playwright/tools/ToolboxSelectedGameStatusBar.spec.mjs` | Changed | Changed | Same core coverage for removed labels, no purpose/action/context pill, same-row layout, footer spacing, fullscreen anchoring, Game Hub ownership, missing-game prompt, and Idea Board exclusion. Difference: #120 asserts exact center-panel reserve equals status bar height; #133 asserts the panel bottom is above the status bar. | |
| 32 | + |
| 33 | +Full changed-file set: |
| 34 | + |
| 35 | +| Category | PR #120 | PR #133 | |
| 36 | +| --- | --- | --- | |
| 37 | +| Runtime/shared UI files | `assets/theme-v2/css/layout.css`, `assets/theme-v2/css/status.css`, `assets/theme-v2/js/toolbox-status-bar.js` | Same three files | |
| 38 | +| Test files | `tests/playwright/tools/ToolboxSelectedGameStatusBar.spec.mjs` | Same file | |
| 39 | +| Build/report files | `docs_build/dev/BUILD_PR.md`, ALFA_003 reports, `codex_changed_files.txt`, `codex_review.diff` | `docs_build/dev/BUILD_PR.md`, ALFA_009 reports, `codex_changed_files.txt`, `codex_review.diff` | |
| 40 | + |
| 41 | +## 2. Feature Comparison |
| 42 | + |
| 43 | +| Feature | PR #120 | PR #133 | Superseded by #133? | |
| 44 | +| --- | --- | --- | --- | |
| 45 | +| Single visible status bar row | Yes | Yes | PASS | |
| 46 | +| Selected game name on left | Yes | Yes | PASS | |
| 47 | +| Status message centered | Yes | Yes | PASS | |
| 48 | +| Remove visible selected-game labels | Yes | Yes | PASS | |
| 49 | +| Remove selected-game purpose from visible bar | Yes | Yes | PASS | |
| 50 | +| Remove visible status category pill labels | Yes | Yes | PASS | |
| 51 | +| Remove status action link | Yes | Yes | PASS | |
| 52 | +| Preserve non-visible context classification data | Yes | Yes | PASS | |
| 53 | +| Preserve Game Hub selected-game ownership | Yes | Yes | PASS | |
| 54 | +| Preserve Idea Board selected-game filtering exclusion | Yes | Yes | PASS | |
| 55 | +| Remove footer/status extra spacing | Yes | Yes | PASS | |
| 56 | +| Preserve fullscreen bottom anchoring | Yes | Yes | PASS | |
| 57 | +| Prevent center content from being hidden behind fixed status bar | Yes | Yes | PASS | |
| 58 | +| Account for platform banner in fullscreen sizing | Partial: workspace top reserve exists, but column sizing does not subtract top reserve | Yes: workspace and column sizing subtract top reserve | PASS, #133 improves this area | |
| 59 | + |
| 60 | +## 3. Validation Comparison |
| 61 | + |
| 62 | +| Validation | PR #120 | PR #133 | Comparison | |
| 63 | +| --- | --- | --- | --- | |
| 64 | +| Targeted Playwright | PASS: `npx playwright test tests/playwright/tools/ToolboxSelectedGameStatusBar.spec.mjs --workers=1`, 6 passed | PASS: same command, 6 passed | Equivalent pass result | |
| 65 | +| Inline style/style block scan | PASS: `rg -n "<style|style=" ...`, no matches | PASS: `rg -n "<[s]tyle|[s]tyle=" ...`, no matches | Equivalent intent; #133 uses escaped pattern to avoid matching the command text itself | |
| 66 | +| Diff whitespace check | PASS: `git diff --cached --check` | PASS: `git diff --cached --check` | Equivalent | |
| 67 | +| Fullscreen reserve assertion | Asserts fixed bar bottom gap, center panel above bar, and exact bottom reserve equals status bar height | Asserts fixed bar bottom gap and center panel above bar | #133 loses the exact reserve-equality assertion, but keeps the user-visible non-overlap assertion | |
| 68 | +| Mergeability | Not mergeable | Mergeable | #133 is safer to advance | |
| 69 | + |
| 70 | +## 4. Missing Behavior Analysis |
| 71 | + |
| 72 | +No required creator-facing behavior from #120 appears missing in #133. |
| 73 | + |
| 74 | +The only behavior-adjacent difference is fullscreen reserve implementation: |
| 75 | + |
| 76 | +- #120 adds `margin-block-end: var(--toolbox-status-bar-height)` to `.tool-center-panel` and tests that the bottom reserve equals the status bar height. |
| 77 | +- #133 removes that exact margin approach and instead constrains `.tool-workspace` and `.tool-column` heights by the status bar and platform-banner reserves, while keeping `scroll-padding-block-end`. |
| 78 | +- #133's targeted test verifies the practical behavior: the center panel bottom is above the fixed status bar. |
| 79 | + |
| 80 | +Conclusion: #133 keeps the intended runtime outcome and improves current-main compatibility. Nothing material was lost for creators. The only loss is a stricter implementation-specific test assertion from #120. |
| 81 | + |
| 82 | +## 5. Regression Risk Analysis |
| 83 | + |
| 84 | +| Risk | PR #120 | PR #133 | Assessment | |
| 85 | +| --- | --- | --- | --- | |
| 86 | +| Stale base conflicts | High | Low | #120 is not mergeable and was based on old `main`; #133 is based on current `main` and mergeable. | |
| 87 | +| Duplicate application of same status bar changes | High if both merge | Low if #120 closes | Merging #120 first would reintroduce stale branch conflict/reconciliation risk. | |
| 88 | +| Fullscreen layout overlap | Mitigated by explicit margin reserve and exact test | Mitigated by workspace/column sizing and non-overlap test | #133 has the better current-main shape because it includes platform-banner reserve in column sizing. | |
| 89 | +| Test coverage regression | Lower for exact reserve-equality check | Slightly higher for implementation-specific reserve equality | Not blocker because #133 still tests observable non-overlap. | |
| 90 | +| Runtime behavior change outside status bar | None indicated in target files | None indicated in target files | Both are scoped to shared UI/CSS/test behavior. | |
| 91 | + |
| 92 | +## Required Answers |
| 93 | + |
| 94 | +| Question | Answer | |
| 95 | +| --- | --- | |
| 96 | +| Does #133 contain all behavior from #120? | Yes for creator-visible and functional behavior. #133 is not a byte-for-byte replacement of #120's fullscreen reserve implementation, but it preserves the intended non-overlap behavior. | |
| 97 | +| Was anything lost? | No material runtime behavior appears lost. The exact #120 Playwright assertion that the center-panel bottom reserve equals the status bar height was not carried forward. | |
| 98 | +| Should #120 merge first? | No. #120 is stale, not mergeable, and would add conflict/reconciliation risk. | |
| 99 | +| Should #120 close as superseded? | Yes, after explicit OWNER approval to close the PR. | |
| 100 | +| Should #133 replace #120? | Yes. #133 should be the replacement PR for this status bar work. | |
| 101 | + |
| 102 | +## Recommendation |
| 103 | + |
| 104 | +**Close #120 and merge #133**. |
| 105 | + |
| 106 | +Owner action should be: |
| 107 | + |
| 108 | +1. Close #120 as superseded after explicit OWNER approval. |
| 109 | +2. Review #133 as the active replacement. |
| 110 | +3. Merge #133 when OWNER approves normal merge readiness. |
| 111 | + |
| 112 | +Do not merge #120 first. |
| 113 | + |
| 114 | +## Requirement Checklist |
| 115 | + |
| 116 | +| Requirement | Status | Notes | |
| 117 | +| --- | --- | --- | |
| 118 | +| Start from `main` | PASS | Checked out `main` before branch creation. | |
| 119 | +| Worktree clean before branch | PASS | Hard-stop gate passed before branch creation. | |
| 120 | +| Local/origin sync `0 0` before branch | PASS | `main...origin/main` was `0 0`. | |
| 121 | +| Read all Project Instructions | PASS | Read files under `docs_build/dev/ProjectInstructions/` before writing report. | |
| 122 | +| Review PR #120 | PASS | Fetched from GitHub authority. | |
| 123 | +| Review PR #133 | PASS | Fetched from GitHub authority. | |
| 124 | +| Compare required files | PASS | Compared all four requested code/test paths. | |
| 125 | +| Produce files changed comparison | PASS | Included above. | |
| 126 | +| Produce feature comparison | PASS | Included above. | |
| 127 | +| Produce validation comparison | PASS | Included above. | |
| 128 | +| Produce missing behavior analysis | PASS | Included above. | |
| 129 | +| Produce regression risk analysis | PASS | Included above. | |
| 130 | +| Use allowed recommendation wording | PASS | Recommendation is `Close #120 and merge #133`. | |
| 131 | +| Do not merge PRs | PASS | No merge action performed. | |
| 132 | +| Do not close PRs | PASS | No PR close action performed. | |
| 133 | +| Do not delete branches | PASS | No branch deletion performed. | |
| 134 | +| Do not modify runtime code | PASS | Report-only changes under `docs_build/dev/reports/`. | |
| 135 | + |
| 136 | +## Validation Lane Report |
| 137 | + |
| 138 | +- PASS: GitHub PR #120 metadata and changed file list fetched. |
| 139 | +- PASS: GitHub PR #133 metadata and changed file list fetched. |
| 140 | +- PASS: Per-file patches fetched for: |
| 141 | + - `assets/theme-v2/js/toolbox-status-bar.js` |
| 142 | + - `assets/theme-v2/css/status.css` |
| 143 | + - `assets/theme-v2/css/layout.css` |
| 144 | + - `tests/playwright/tools/ToolboxSelectedGameStatusBar.spec.mjs` |
| 145 | +- PASS: GitHub compare confirmed #120 and #133 branch histories diverged; #133 is not a direct continuation of #120. |
| 146 | +- PASS: Local report scope stayed under `docs_build/dev/reports/`. |
| 147 | +- PASS: Runtime tests were not run locally because this task is audit/report only and no runtime code changed. |
| 148 | + |
| 149 | +## Manual Validation Notes |
| 150 | + |
| 151 | +- Confirmed #120 and #133 both remove status bar labels, purpose text, context pill, and action link. |
| 152 | +- Confirmed #120 and #133 both preserve selected game name and status message as the visible status bar content. |
| 153 | +- Confirmed #133 is based on current `main`, while #120 is based on an older base and is not mergeable. |
| 154 | +- Confirmed #133 should be treated as the active replacement PR. |
| 155 | +- Confirmed #120 should not be merged before #133. |
| 156 | +- Confirmed no GitHub state was modified during this review. |
| 157 | + |
| 158 | +## Artifacts |
| 159 | + |
| 160 | +- `docs_build/dev/reports/PR_26175_ALFA_010-status-bar-replacement-review.md` |
| 161 | +- `docs_build/dev/reports/codex_changed_files.txt` |
| 162 | +- `docs_build/dev/reports/codex_review.diff` |
| 163 | +- `tmp/PR_26175_ALFA_010-status-bar-replacement-review_delta.zip` |
0 commit comments