FAQ¶
Answers to common questions, mostly for the Basic Manual path where you create the release and attach the wheel by hand.
How do I publish so Oliver sees both assets?¶
Oliver reacts to the moment a release is published. If you create a published
release first and upload the .whl afterwards, Oliver may look before the wheel is
attached and bail. So attach the assets while the release is still a draft,
then flip it to published.
In the GitHub UI: Draft a new release → Save draft → upload the .apworld and
the .whl → Publish release.
With the gh CLI, create the release as a draft with both assets, then publish:
# Create a draft and upload both assets in one step
gh release create <tag> \
build/apworlds/<apworld>.apworld \
worlds_<apworld>-<version>-py3-none-any.whl \
--draft --title "<apworld> <version>"
# Flip the draft to published — this is the event Oliver acts on
gh release edit <tag> --draft=false
The tag can be anything; Oliver identifies your world from the attached
<apworld>.apworld asset, not from the tag.
Can I skip Oliver and open the Index PR myself?¶
Yes. Oliver is a convenience — it records the wheel's location and SHA256 pin for you. You can do the same by hand:
- Get the wheel's download URL. After publishing, the asset has a public
browser_download_urlof the formhttps://github.com/<you>/<repo>/releases/download/<tag>/worlds_<apworld>-<version>-py3-none-any.whl. (gh release view <tag> --json assetslists it.) -
Compute the wheel's SHA256.
sha256sum worlds_<apworld>-<version>-py3-none-any.whl # Linux shasum -a 256 worlds_<apworld>-<version>-py3-none-any.whl # macOSOn Windows PowerShell:
Get-FileHash worlds_<apworld>-<version>-py3-none-any.whl -Algorithm SHA256. 3. Build themodule_locationby appending the hash as a PEP 503 direct-reference fragment:https://github.com/<you>/<repo>/releases/download/<tag>/worlds_<apworld>-<version>-py3-none-any.whl#sha256=<hex> -
Add the manifest. Create or edit
worlds/<apworld>.jsonin the Index with yourgame,world_version, and themodule_locationabove. See the archipelago.json reference for the fields. - Open a PR on
MultiworldGG-Indexwith that change. Karen runs the same review checks she runs on Oliver's PRs, and a human CODEOWNER merges.
The #sha256=<hex> pin is what makes this safe: pip verifies the downloaded bytes
against it before executing any code. More on why.
Do I have to use the <apworld>-<version> tag format?¶
Only on the automated paths, where the workflow parses the apworld and version
from the tag. On the Basic Manual path you can
tag the release however you like — Oliver reads the world name from the attached
<apworld>.apworld asset.