*Disclosure: I am a Salesforce employee and the author of much of this code in CumulusCI.*

There's a few different things that need to happen to make this very complex process work, but once you get them all in place, it should work 100% of the time.

1. You must have a GitHub service authorized to CumulusCI. If you're running locally/interactively, you do this by running `cci service connect github`. If you're running headlessly, [you'll use environment variables](https://cumulusci.readthedocs.io/en/stable/headless.html).
2. As the message says, you must have pushed the commit you're working on so that there's a place to put the commit status.
3. You run the flow `build_unlocked_test_package`. If this succeeds, you should be able to _see_ a commit status on your commit in GitHub, which will have an `04t` package version id in the description.
4. Then, you can run `qa_org_unlocked`. Note that you must still have the commit from (3) checked out in your local working directory.

If you've done all four of these steps and it's still not working, please edit some additional detail into your questions and I can help triage.

---

> What is the proper way to manually create a test unlocked package and install it in a feature or qa scratch org? 

I aimed to cover this above, but please let me know if it's unclear.

> What if I'm using a persistent QA org? 

Doesn't really matter (although I hate persistent QA orgs!) - unlocked packages will upgrade on install, and I have tested this hands-on myself. You may want to run `install_unlocked_commit` directly rather than `qa_org_unlocked` if the latter also does configuration you do not wish to repeat in your persistent org.

> what if I'm not using GitHub Actions (CircleCI instead)?

Doesn't matter so long as you provide GitHub authentication to CumulusCI as in (1) above.

---

From your comment:

> I am developing an unlocked package. I have already created beta and release versions for the package but I'm trying to see if I can create the package versions in CircleCI

Bear in mind that the flows you are using are intended to facilitate testing prior to merging code. They shouldn't be used to create your distributable package versions. For that, see [Release an Unlocked Package](https://cumulusci.readthedocs.io/en/stable/unlocked-package.html) in the documentation.