Skip to content

blog: LuCLI and the Zero-Docker Developer Experience (recover failed auto-deploy) - #2578

Closed
bpamiri wants to merge 1 commit into
developfrom
peter/blog-lucli-zero-docker-developer-experience
Closed

bpamiri wants to merge 1 commit into
developfrom
peter/blog-lucli-zero-docker-developer-experience

Conversation

@bpamiri

@bpamiri bpamiri commented May 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Recovery PR for today's scheduled blog post that failed to auto-deploy. Same pattern as #2551 (Multi-Tenancy recovery).

What happened

The publishing-admin scheduler ran at 2026-05-11 08:19:00, successfully exported the markdown for this post, and then asked GitDeployer to commit + push it to develop. The deploy step failed:

```
2026-05-11 08:19:00 ok lucli-zero-docker-developer-experience
2026-05-11 08:19:00 deploy-fail lucli-zero-docker-developer-experience rebase-failed: Rebasing (1/1)
```

The rebase conflict was on a different file (multi-tenancy-built-in.md), not the lucli file. Root cause: GitDeployer naively runs git rebase origin/develop on whatever branch the wheels repo working tree happens to be on. At the time, that was peter/bot-convergence-loop, which carried already-merged commits — rebasing replayed them onto develop and hit add/add conflicts. The lucli commit GitDeployer was about to make never landed.

Article content

The post body was already up to date in SQLite (posts.id=875, body=12776 chars). After the failed deploy I made five follow-up edits today that the auto-deploy never had a chance to ship:

  1. Removed dead brew install lucli install steps (the binary is shipped as wheels via Homebrew/Scoop — there is no lucli on a normal install).
  2. Added Windows install via scoop-wheels bucket, including the wheels-be channel that resolves cleanly pre-GA.
  3. Removed all Chocolatey references — that effort was abandoned after the package sat in moderation for ~3 months; added a paragraph explaining the pivot.
  4. Added forward-looking note on dnf / yum / apt as the next packaging frontier.
  5. Bumped updatedAt to reflect the editing pass.

Why this is safe to merge

  • No code changes — single new file at web/content/blog/posts/lucli-zero-docker-developer-experience.md.
  • SQLite (posts.id=875) and the .md body match byte-for-byte.
  • The post is already status=published in SQLite, so the scheduler will not retry the deploy (idempotent by design — see Post.scheduledDue()).

Companion PR

A separate PR in wheels-publishing-admin hardens GitDeployer.cfc to switch to develop before deploying, which is the structural fix that prevents tomorrow's launch article from hitting the same trap.

Test plan

🤖 Generated with Claude Code

…auto-deploy)

The scheduled auto-deploy for this post failed at 2026-05-11 08:19:00
with a rebase conflict on an unrelated file (multi-tenancy-built-in.md).
Root cause: GitDeployer rebases the current branch onto origin/develop
without ensuring the working tree is on develop first; when the wheels
repo was left on a feature branch (peter/bot-convergence-loop) that had
already-merged commits, the rebase replayed them and hit add/add.

The export ran successfully (lastExportedAt=2026-05-11 08:19:00, body
matches DB), so this is purely the missing commit. Same recovery pattern
as #2551 (multi-tenancy).

Companion PR in wheels-publishing-admin hardens GitDeployer to ensure
develop checkout before deploy, so tomorrow's launch article does not
hit the same trap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the docs label May 11, 2026

@wheels-bot wheels-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wheels Bot — Reviewer A

This PR recovers a failed auto-deploy of a new blog post: web/content/blog/posts/lucli-zero-docker-developer-experience.md. There are no code changes — single markdown file addition. The recovery rationale (GitDeployer rebasing the wrong branch) is explained clearly. However, the PR has a commitlint violation and two factual inaccuracies in the article content that should be corrected before merge.


Correctness

1. wheels server start|stop|status does not exist — should be wheels start|stop|status

In the "What ships in the 4.0 CLI" section:

- `wheels server start | stop | status` wraps the LuCLI server lifecycle.

CLAUDE.md (line 26) gives the canonical form:

| Server | `wheels_server(action="status")` | `wheels start|stop|status` |

The top-level commands are wheels start, wheels stop, and wheels status. There is no wheels server subcommand namespace for the lifecycle actions. A reader who copies wheels server start will get an error.

Suggested fix (web/content/blog/posts/lucli-zero-docker-developer-experience.md, line 115):

-- `wheels server start | stop | status` wraps the LuCLI server lifecycle.
+- `wheels start | stop | status` wraps the LuCLI server lifecycle.

2. wheels dbmigrate is not the correct surface for latest|up|down|info

Also in "What ships in the 4.0 CLI":

- `wheels dbmigrate latest | up | down | info | diff` handles migrations...

CLAUDE.md distinguishes two separate surfaces: wheels migrate for the standard migration lifecycle (line 23: wheels migrate latest|up|down|info) and wheels dbmigrate diff exclusively for the auto-migration diff feature (lines 712-716). Collapsing both under wheels dbmigrate documents a command form that does not exist for the first four verbs.

Suggested fix (web/content/blog/posts/lucli-zero-docker-developer-experience.md, line 116):

-- `wheels dbmigrate latest | up | down | info | diff` handles migrations, including auto-diff for model-versus-schema drift.
+- `wheels migrate latest | up | down | info` handles migrations; `wheels dbmigrate diff` generates auto-migration files from model-versus-schema drift.

3. Lucee 5 and CF 2018/2021 described as supported

In "Why Docker was the wrong default":

The framework supports Lucee 5, 6, 7, Adobe ColdFusion 2018, 2021, 2023, 2025, plus BoxLang...

CLAUDE.md is explicit: "compose.yml also defines lucee5, adobe2018, adobe2021 services for historical reasons; they are NOT in the CI matrix and should be considered unsupported for new development." Calling them supported in a public blog post overstates the compatibility promise. Suggested rewording:

The framework targets Lucee 6 and 7, Adobe ColdFusion 2023 and 2025, and BoxLang across seven databases, with Lucee 7 + SQLite as the primary inner-loop combination.


Commits

The single commit uses the type blog:

blog: LuCLI and the Zero-Docker Developer Experience (recover failed auto-deploy)

blog is not an allowed type. commitlint.config.js enumerates the valid set: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. For new prose content under web/content/, the correct choice is docs with optional scope web/blog.

docs(web/blog): LuCLI and the Zero-Docker Developer Experience

Fix with:

git commit --amend -m "docs(web/blog): LuCLI and the Zero-Docker Developer Experience"
git push --force-with-lease

Summary

Three blocking items before merge:

  1. Fix wheels server start|stop|status to wheels start|stop|status — readers copy CLI commands verbatim.
  2. Fix wheels dbmigrate latest|up|down|info to wheels migrate latest|up|down|info (reserve wheels dbmigrate diff for auto-diff only).
  3. Amend the commit type from blog to docs (or docs(web/blog)) — commitlint will reject the current commit on CI.

The Lucee 5/CF 2018/CF 2021 claim is a non-blocking accuracy nit but worth correcting in the same pass.

@bpamiri

bpamiri commented May 11, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded — commitlint flagged the blog: prefix (which #2551 used yesterday) as no longer accepted. Re-opened as a fresh branch with the docs(blog): prefix; the new PR will be linked once gh pr create finishes.

@bpamiri bpamiri closed this May 11, 2026
@bpamiri
bpamiri deleted the peter/blog-lucli-zero-docker-developer-experience branch May 27, 2026 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant