chore(devx): R2 Phase A - Linux script portability, qtest repairs, doc truth pass - #412
Conversation
…c truth pass bin/test, bin/dev, bin/build, bin/hive used sh shebangs with bash-only set options (pipefail/-E); dash - /bin/sh on Debian/Ubuntu - exits 2 before the first real line, so the documented primary entry points were dead on every Linux host. Shebangs fixed to bash (same pattern as the Phase 1 bin/dc/bin/docked fix). New test/unit/bin_scripts_test.rb guards the class in CI - it caught bin/hive on its first run. bin/dtest passed args as the raw container command (`t "$@"`), so `bin/dtest path.rb` exec'd the .rb file instead of running it through the test runner; now `t bin/test "$@"` (mirrors bin/dtest-all). bin/hugo-dev retired: it never exported HUGO_ENVIRONMENT, so `rake dev` ran the FULL production PostCSS chain (PurgeCSS+cssnano) on every CSS rebuild - against a stats file dev mode never writes. `rake dev` now runs bin/dev, which sets the env correctly. bin/qtest: `privacy-policy` key added (touching critical/privacy-policy-critical.css hard-aborted as an unknown key); dead test/system/pages/careers_page_test.rb branch removed; dirty- baseline guard now honors ALLOW_DIRTY_SCREENSHOTS=1 and points at `bin/rake test:screenshots:reset`, matching the canonical guard. Doc truth pass #2: README - 4 broken links fixed (CI-CD, dev.to, docs-overview row dropped, LICENSE -> CC URL), fictional coverage-report section removed (SimpleCov is never loaded), dead SELENIUM_BROWSER env replaced with the real CHROME_BIN/CHROMEDRIVER_PATH/ALLOW_DIRTY vars, command table now lists qtest/dtest-all/setup-test-env/screenshots:reset. docs/SETUP.md - bare-metal Linux runs ARE comparable via bin/setup-test-env (the old claim predated Phase 4); chromium row replaced with the pinned CfT flow. .okf: ci-gates' Alpine/musl premise marked obsolete (R2 Phase B plans the CI visual gate), test-gates + testing.md refreshed, dated log entry added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PXHeUErqoiyH9xN1mjC8cH
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (16)
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 |
Summary
First PR of DevX Round 2 (approved plan) — the ship-blockers found by the post-Round-1 audit.
Scripts dead on Linux — fixed
bin/test,bin/dev,bin/build, andbin/hivehad#!/usr/bin/env shshebangs with bash-onlysetoptions (pipefail,-E). dash (Debian/Ubuntu/bin/sh) treats a bad option to thesetspecial builtin as fatal — the scripts exited 2 before their first real line. That means the documented primary entry points (bin/testper README/CONTRIBUTING/SETUP,bin/devfor the dev server) were unusable on every Linux host. Same class Phase 1 fixed inbin/dc/bin/docked— the sweep just wasn't exhaustive.New guard:
test/unit/bin_scripts_test.rbfails CI on anysh-shebang script underbin/that usespipefail/-E(plus a missing-shebang check). It caughtbin/hiveon its very first run — the class is real.bin/dtest arg bug
t "$@"set the container command to the bare.rbpath, sobin/dtest test/system/foo_test.rbtried to exec the test file itself. Nowt bin/test "$@", mirroringbin/dtest-all.bin/hugo-dev retired
It passed
--environment developmentto Hugo but never exportedHUGO_ENVIRONMENT, so PostCSS saw production andrake devpaid the full PurgeCSS+cssnano chain on every CSS rebuild — against ahugo_stats.jsonthat dev mode never regenerates.rake devnow runsbin/dev(which exports the env correctly). One dev script, the working one.bin/qtest repairs
privacy-policykey added — editingcritical/privacy-policy-critical.csspreviously hard-aborted qtest with "unknown page key".test/system/pages/careers_page_test.rbbranch removed (directory doesn't exist).ALLOW_DIRTY_SCREENSHOTS=1and points atbin/rake test:screenshots:reset.Doc truth pass #2
50.02path, dev.to → real80.01path, nonexistent docs-overview row dropped,LICENSEfile link → CC BY-SA URL); fictional coverage-report section deleted (SimpleCov is never loaded anywhere); deadSELENIUM_BROWSERenv replaced with the realCHROME_BIN/CHROMEDRIVER_PATH/ALLOW_DIRTY_SCREENSHOTSvars; command table now listsbin/qtest,bin/dtest-all,bin/setup-test-env,rake test:screenshots:reset.docs/SETUP.md: the "bare-metal Linux diffs are environmental" claim predated Phase 4 and steered people away from the pinned stack — replaced with thebin/setup-test-envflow;apt-get install chromiumrow replaced (unpinned distro Chromium is exactly what baselines must not be compared against)..okf:ci-gates.md's Alpine/musl rationale for excluding visual CI marked obsolete (image is Debian/glibc now; R2 Phase B plans the gate's return, report-only first);test-gates.md+workflows/testing.mdrefreshed; dated log entry.Verification
test/unit/bin_scripts_test.rb: green after fixes; red when a shebang is reverted (proven — it flaggedbin/hivebefore I fixed it).bash -nclean on all touched scripts;bin/test --helpnow reaches the Ruby runner on this dash-default container (previously:set: Illegal option -o pipefail, exit 2).bin/qtestloads and resolves the newprivacy-policykey; unknown-key abort path unchanged for genuinely unknown files.🤖 Generated with Claude Code
https://claude.ai/code/session_01PXHeUErqoiyH9xN1mjC8cH
Generated by Claude Code