Summary
wheels reload (cli/lucli/Module.cfc::reload()) prints Application reloaded successfully. based solely on makeHttpRequest() not throwing — it never inspects the HTTP status code. Against an Adobe app where ?reload=true currently 500s (the #3036 local.url shadowing regression, #3053), the CLI claims success while the app was never reloaded. The same blindness silently masks wrong-password responses (the framework serves a normal non-reloading page that the CLI ignores).
Repro (released 4.0.3 brew CLI against a develop @ f668c50 app on the adobe2023 harness)
wheels reload --password=smokepw
# -> Application reloaded successfully.
# -> Note: onApplicationStart does NOT re-fire. ...
curl -s -o /dev/null -w '%{http_code}\n' 'http://localhost:61753/?reload=true&password=smokepw'
# -> 500
Meanwhile the app's onApplicationStart counters (a writeLog in config/services.cfm, a CONFIG-RAN log in a controller config()) are unchanged across the CLI call — no reload happened.
Root cause
reload() in cli/lucli/Module.cfc treats any completed HTTP exchange as success; there is no status-code check and no verification that the application actually restarted.
Proposed direction
- Inspect the response status from
makeHttpRequest: treat >= 400 (and connection-level failures) as errors — print the status plus a hint, exit non-zero.
- Optionally verify the reload took effect (e.g. compare
/wheels/info?format=json uptime/instance id before and after, in development).
- Keep success-path output unchanged on Lucee.
Acceptance
Reported by the 2026-06-11 guide behavioral audit (P1 batch 1): request-lifecycle verifier (claim reload-cli-command, code-broken — the Adobe 500 itself is tracked as #3053; this issue is the CLI's false-success reporting). Findings catalog: docs/superpowers/audits/2026-06-guide-audit-findings.md.
Summary
wheels reload(cli/lucli/Module.cfc::reload()) printsApplication reloaded successfully.based solely onmakeHttpRequest()not throwing — it never inspects the HTTP status code. Against an Adobe app where?reload=truecurrently 500s (the #3036local.urlshadowing regression, #3053), the CLI claims success while the app was never reloaded. The same blindness silently masks wrong-password responses (the framework serves a normal non-reloading page that the CLI ignores).Repro (released 4.0.3 brew CLI against a develop @ f668c50 app on the adobe2023 harness)
Meanwhile the app's
onApplicationStartcounters (awriteLogin config/services.cfm, a CONFIG-RAN log in a controllerconfig()) are unchanged across the CLI call — no reload happened.Root cause
reload()incli/lucli/Module.cfctreats any completed HTTP exchange as success; there is no status-code check and no verification that the application actually restarted.Proposed direction
makeHttpRequest: treat >= 400 (and connection-level failures) as errors — print the status plus a hint, exit non-zero./wheels/info?format=jsonuptime/instance id before and after, in development).Acceptance
wheels reloadexits non-zero with a clear message when the reload endpoint returns 4xx/5xx or the connection fails.Reported by the 2026-06-11 guide behavioral audit (P1 batch 1): request-lifecycle verifier (claim
reload-cli-command, code-broken — the Adobe 500 itself is tracked as #3053; this issue is the CLI's false-success reporting). Findings catalog:docs/superpowers/audits/2026-06-guide-audit-findings.md.