Skip to content

Make forge the documented interface - #12

Merged
zelti merged 2 commits into
mainfrom
docs/forge-as-the-interface
Aug 24, 2026
Merged

zelti merged 2 commits into
mainfrom
docs/forge-as-the-interface

Conversation

@zelti

@zelti zelti commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Tasks 34 and 35, together — they are one problem.

The installer signed off with the command forge exists to replace, so forge help was never discovered:

🎉 Done. Restart your browser so it picks up the new CA.
   Start the environment with: docker compose up -d

That line was in install_cert.sh, which the installer calls last — install.sh already ended with forge start.

Every docker compose instruction in both READMEs is now a forge command. Two mentions remain, and both are prose rather than instructions: the sentence saying forge wraps compose, and the one describing what CI validates.

Task 38 was done first so this pass had no exception to write around. README.md used to say "Profiles are a compose feature, so this one stays a docker compose command" — that sentence is gone, and the nginx dance is one command:

forge profile on nginx     # stops apachedev; they cannot share the ports
forge profile off nginx    # and brings it back

One command had to grow

forge logs followed a single PHP container, so troubleshooting still pointed at docker compose logs — and naming a container is not something you can do before you know what broke.

forge logs              every service      <- new default
forge logs 8.4          that PHP container
forge logs apachedev    that service       <- new

Validated against plain docker compose config --services, not compose_with_env, which clears COMPOSE_PROFILES and would reject mailpit.

The READMEs had drifted further than the headings showed

The ## sections matched, which is what had been checked. Inside them: English had no xdebug commands at all; Spanish was missing three troubleshooting entries and had no subsection for its command block. Both now carry the union, in the same order, so they are translations rather than variants.

Also switched where the READMEs called scripts directly — forge dns setup|status|test|remove, forge certs — each noting the script still works. And the stale "Aliases not working" entry became forge: command not found, which is what people actually hit: the aliases it referred to were removed when forge replaced them.

Guarded

A lint step greps both READMEs for docker compose up|logs|stop|--profile|build and fails. Verified locally that it fails when a violation is added, not just that it passes today.

Both changed CI steps were run verbatim against a local stack first, using the harness from #11.

zelti added 2 commits August 23, 2026 21:44
The installer signed off with 'docker compose up -d' -- the command forge
exists to replace -- so forge help was never discovered. That line was in
install_cert.sh, which runs last, not install.sh.

Every docker compose instruction in both READMEs is now a forge command.
The two mentions left are prose: the sentence saying forge wraps compose,
and the one describing what CI validates.

forge logs grew to make that possible. It followed one PHP container, so
troubleshooting still pointed at docker compose logs -- naming a
container is not something you can do before you know what broke. No
argument now means every service; an argument can be a service or a
version.

Also realigns the two READMEs, which had drifted further than the
heading list showed: English had no xdebug commands, Spanish was missing
three troubleshooting entries. Both now carry the union in the same
order.

A lint step greps for the instructions coming back.
The assertions sat in 'the forge command works', which runs before the
stack is built, so 'forge logs' had nothing to show. They now live after
the welcome page is confirmed served, in a step whose comment says why it
has to.

They also asserted the wrong thing. 'apachedev appears in the output'
passes even with a stopped container -- compose keeps logs for those --
and would have passed if the command regressed to following one
container. It now counts distinct services: at least three with no
argument, exactly one when a service is named.

Verified by putting the old single-container behaviour back and watching
the step fail with 'named 1 services'.
@zelti
zelti merged commit cdc5672 into main Aug 24, 2026
4 checks passed
@zelti
zelti deleted the docs/forge-as-the-interface branch August 24, 2026 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant