prep: ready zeitghost for Apache-2.0 OSS companion release#15
Merged
Conversation
- Add CHANGELOG.md (Keep a Changelog, seeded with 0.1.0)
- Soften perseus-news references (private sibling, drop dead GitHub link)
in README and CLAUDE.md
- Move per-node identity out of tracked files into CI secrets / env:
inventory reads ansible_host + ansible_user via lookup("env", ...)
(DEPLOY_HOST required, DEPLOY_USER defaults to "deploy"); deploy
workflow injects both from repo secrets and the health check curls
$DEPLOY_HOST instead of the literal IP
- Genericize bootstrap deploy user frionode -> deploy throughout
Domain (news.spiritwriter.ai) intentionally left in place: it is the
public site, baked into nginx server_name and the rendered landing page.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
spiritwriter-core renamed its PyPI distribution to `spiritwriter` (>=0.9.0).
The import name is unchanged, so zeitghost's `import spiritwriter` code is
unaffected — but several spots reference the *distribution* name and would
break or go stale otherwise:
- pyproject + CLAUDE.md: dependency `spiritwriter-core` -> `spiritwriter>=0.9.0`
- generator.py / shards.py: `importlib.metadata.version("spiritwriter-core")`
-> `version("spiritwriter")` (footer/provenance version chip; resolved to
""/"?" under the old name once the renamed wheel is installed)
- wheel-build globs: `spiritwriter_core-*.whl` -> `spiritwriter-*.whl` in the
deploy workflow and build-wheels.sh (wheel filename derives from the dist
name, so the cleanup glob no longer matched the rebuilt wheel)
- public site: `pip install spiritwriter` in the install chip + copy button,
PyPI project URL, and "Powered by spiritwriter" branding across templates
Left unchanged: the GitHub repo (`aaronmarkham/spiritwriter-core`) isn't
renamed, so repo URLs, the CI checkout dir (`path: spiritwriter-core`),
sibling-repo paths (`../../../spiritwriter-core`), and a few infra comments
that name the source repo stay as-is.
Tests: 67 passed. `version("spiritwriter")` resolves to 0.9.0; rebuilt wheel
`spiritwriter-0.9.0-*.whl` matches the updated glob.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Preps zeitghost for an Apache-2.0 open-source release alongside spiritwriter-core.
What this does
License/community files
CHANGELOG.md(Keep a Changelog style, matching spiritwriter-core), seeded with0.1.0.LICENSE(full Apache 2.0),NOTICE, andpyproject.tomllicense metadata were already correct.Scrubbing private infra from tracked files
ansible_hostvialookup("env", "DEPLOY_HOST")(required) andansible_uservialookup("env", "DEPLOY_USER")(defaults todeploy);/home/...paths derive fromansible_user.DEPLOY_HOST/DEPLOY_USERfrom repo secrets, and the health check curls$DEPLOY_HOSTinstead of the literal IP.frionode→deploythroughoutinfra/bootstrap/.git grepfor the old IP / username returns nothing.Docs
README.md/CLAUDE.md.Intentionally left in place
news.spiritwriter.ai/spiritwriter.ai— it is the public site (nginxserver_name, rendered landing page), not a secret.Required before next deploy
Repo secrets
DEPLOY_HOSTandDEPLOY_USERmust be set (done). Without them the inventory has no SSH target.Validation
bash -nclean onbootstrap.sh.🤖 Generated with Claude Code