Task: Publish the page set and a release

TASK-DESCRIPTION

The task publishes phase 4: the standard page set goes live through the homelab publisher, and the built artifacts become a GitHub release.

scripts/release-publish.sh tags the current commit, pushes the branch and the tag, and creates or updates the GitHub release with the packaged tarball and its checksum. It builds from the commit being released, refuses a dirty tree, refuses a version that does not name the commit, reuses a tag already on the commit, refuses a tag on another commit, skips a redundant push, and re-uploads the assets when the release already exists. tests/81-release-publish.sh exercises the success path and the refusals against a scratch repository with a local bare remote and a stub gh, so it never publishes anything. The editor configuration is recorded with a workspace-relative CMake source path, as the contract requires of committed tool configuration.

The homelab registration and the live deploy are the cross-project steps the owner authorized when ratifying this task: - add the project to sources/projects.yaml in ~/work/00-homelab; - run the homelab’s make deploy, which fetches this project’s site.out/, re-runs the leak gate, and publishes it.

The status pages and PHASES.md record the completed phase; the README gains the repository, release, and published-pages links.

TASK-OUTPUT

Produce these complete files in this order, then the VERIFICATION: line: 1. scripts/release-publish.sh 2. tests/81-release-publish.sh 3. .vscode/settings.json 4. Makefile 5. README.md 6. TODO.md 7. PHASES.md 8. site.in/index.txt 9. prompts/tasks/00-tasks.md

TASK-CONTEXT

The capability rules are in prompts/capabilities/04-release-and-publishing.md: a release must be the artifact of the commit it names, the build happens inside the publish path, the tag is reused or checked, and a publish is re-runnable. The page requirements are in prompts/features/02-project-pages.md.

The homelab deploy is the only publisher. Do not push pages to the web server from this project. Before the live deploy, verify SSH access to the target, confirm the homelab working tree contains only the registry change, and record the rollback: remove the registry entry and redeploy.

TASK-FILES

Operation Path
create scripts/release-publish.sh
create tests/81-release-publish.sh
create .vscode/settings.json
modify Makefile
modify README.md
modify TODO.md
modify PHASES.md
modify site.in/index.txt
modify prompts/tasks/00-tasks.md

TASK-VERIFY

TASK-FEATURES

TASK-ACCEPTANCE

OUTPUT: the complete files in the order listed, ending with the VERIFICATION: line.