| `539422c6d` | **Stage 1 assembled, run, and the suite found that its file list was a guess: 150 failures from five files nobody had listed.** It built, booted, and then failed with `Sprockets::Rails::Helper::AssetNotPrecompiledError` on `controllers/csv_download_controller.js` — an asset that is on `main`, is declared in `main`'s `manifest.js`, and has nothing to do with the design system. **The control made it tractable in minutes**: the same example passes on pristine `main`, so the stage caused it; asking Sprockets directly gave `manifest.js found: false` against `true` with 68 links on main, and one extra load path — `app/assets/tailwind`. Tailwind v4 source uses `@import "tailwindcss"`, Sprockets cannot parse it, **the whole manifest dies and every asset then reports as not precompiled**, so the error names whichever one the layout asked for first. `cda053539` had already solved this in `config/initializers/assets.rb`, with a comment saying Sprockets must serve the build and never the source — **and stage 1's paths listed no initializers at all.** Five files were missing: that initializer, `simple_form_essentials.rb`, `config.assets.css_compressor = nil` from `config/application.rb`, and two specs — `asset_resolution_spec.rb`, which pins which `application.css` wins and is the guard for precisely this, and `essentials_shell_spec.rb`. **Three rules, all now enforced by the builder rather than written down.** *A stage carries its own specs* — stage 1 listed none, and the spec that would have caught this was in the source commit, unlisted. *Additive by default, every overwrite named* — the stage silently replaced `confirmation_controller.js` and `donations_modal_controller.js`, both rewritten at `cda053539` from Bootstrap's modal to the native `<dialog>`; stage 1 migrates no views, so main's `<div class="modal">` would have reached `showModal()`, which is not a function on a div. `overwrite:` is an allowlist now and anything else is reverted and reported. *Some files are neither taken nor one-line composed* — `config/application.rb` at `cda053539` also switches the Devise layouts to `essentials_auth`, a later stage, so it is an `insert:` of anchor plus text. **Two environment traps** joined the checklist: main's lock omits `aarch64-linux` so `tailwindcss-ruby` has no executable (the builder adds the local platform), and **Sprockets caches its manifest in `tmp/cache` across branch switches**. Also found: `bin/rails` cannot run *any* rake task on this mount — it is case-insensitive, `File.exist?("rakefile")` answers true, and Rake loads the lowercase spelling and fails; `bundle exec rake -f Rakefile` works. Stage 1 `--check` now: 58 files. |
0 commit comments