fix: the site is a route of keel-default, no check page of lnmp, and the commissioning contract #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/commission-contract"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Stacked on #1 (
fix/ci-runner-label, the 45laravel hook and the tests): this branch starts at its head,dec1fee, so until #1 is merged the diff here shows its commits too. The new commit is1bae3c0.The contract of decision 0075 for this layer showed two image defects:
keel-default, is the default server on 80 and 443. The site of 19.0 (1) was a server of its own withdefault_serveron 80, songinx -trefuses it (a duplicate default server), and 443 served the placeholder page of keel-web. The site is now a route of the default site,/etc/nginx/keel-default.d/60-keel-laravel.conf, made of regular expressions as keel-wordpress has it: onlypublic/index.phpruns, other PHP files are 404, hidden files are refused (not/.well-known/), and the site answers 503 until 45laravel has written.env. conf.d/main runsnginx -ton a stand-in of the default site.keel_check, and/keel-check/shows the stack to anybody. It is lnmp's (decision 0059, point 6), not part of a Laravel product: conf.d/main removes the hook,50-keel-lnmp.confand/usr/share/keel-lnmp/www. confconsole's services screen names the Laravel site and Webmin.Also:
keel/instance.example.yaml:appliance,installation.modeand every overlay of the chain (keel 0.23.83 refuses a description that leaves one out).tls.acme.emailis not a key of the spec (keel: "tls.acme.email: unknown key"), so acme is off, as in lnmp's example.tests/commission.yaml: questions (root, MariaDB admin of lnmp, Mode, alerts), the description, proofs, services, URLs (/200 on 443,/keel-health204 on 80 of the loopback,/.env403,/keel-check/404), forbidden items (keel_check, 40lnmp-check, the route of lnmp, a SQLite file, build tools)..forgejo/workflows/tests.yml: the jobcommission / contract.Not run on the real sites. The laravel layer on the 11-05 lnmp was not built: my session could not put this branch into
/turnkey/fab-keel/products/laravelon the build host. The coordinator builds it:flock /root/bt.lock bt-layer laravel --parent lnmpfrom this branch, then the lxc-interactive and lxc-preseed passes on BR1 and BR2.The first contract asked
http://127.0.0.1/for 200 and the passes answered 404. That is by design: the checks run inside the machine, and on the loopback port 80 is the server of keel-overlay-nginx'sconf.d/keel-health.conf(/keel-health204, everything else 404). keel-default answers 80 on the machine's own addresses. The contract now askshttp://127.0.0.1/keel-healthfor 204.CI: the appliance job declares
allow_unpublished: true: the laravel layer has never been published (the mirror answers 404), and without it the job failed at once, as on #1.Test plan:
tests/layer.bats: 6 new tests, RED before the change, GREEN after; a site withdefault_serverin the overlay fails themnginx -twith nginx 1.26.3 (the image's) and the snippets of the lnmp rootfs: the route in a stand-in of keel-default is ok; the site of 19.0 (1) beside keel-default givesa duplicate default serverCOVERAGE_THRESHOLD=100 tests/coverage.sh: 100 percent (290/290), 112 testskeel-commission --check tests/commission.yaml: validnginx -tin conf.d passeskeel-web's default site, keel-default, is the default server on 80 and 443. The site of 19.0 (1) was a server of its own with default_server on 80, so nginx -t refuses it ("a duplicate default server"), and 443 served the placeholder page of keel-web. Found when the contract of decision 0075 was written for this layer (2026-11-06). - overlay/etc/nginx/keel-default.d/60-keel-laravel.conf: the route, made of regular expressions, as keel-wordpress has it. Only public/index.php runs, every other PHP file is 404, hidden files are refused (not /.well-known/), and the site answers 503 until 45laravel has written .env. sites-available/laravel is removed. - conf.d/main: nginx -t on a stand-in of the default site with the route in it; the real default site must include keel-default.d. - conf.d/main: the check page of lnmp is removed: 40lnmp-check (it makes the database keel_check), 50-keel-lnmp.conf and /usr/share/keel-lnmp/www. It is not part of a Laravel product (decisions 0059 and 0075). - overlay/etc/confconsole/services.txt: the Laravel site and Webmin, not the check page of lnmp. - keel/instance.example.yaml: appliance, installation.mode and every overlay of the chain (keel 0.23.83 refuses a description that leaves one out); tls.acme.email is not a key of the spec, so acme is off, as in lnmp. - tests/commission.yaml: the questions (root, MariaDB admin, Mode, alerts), the description, the proofs, the services, the URLs (/.env 403, /keel-check/ 404) and what is forbidden (keel_check, 40lnmp-check, the route of lnmp, a SQLite file). - .forgejo/workflows/tests.yml: the job "commission / contract". - tests/layer.bats: 6 new tests; coverage stays 100 percent (290/290). - changelog: turnkey-laravel-19.0 (2).1bae3c03c70e8cdec2fa0e8cdec2fad725c81789