Publishing a finished project¶
A run that ends at REVIEW leaves its work on a local branch. Publishing is the last step: it pushes that branch and opens a pull request, or, for a project with no remote, creates a new GitHub repository and pushes to it. Both send work off your machine and neither is easy to take back, so nothing is published unless you turn it on, and the safe choices are the defaults.
Turn it on¶
[publish]
mode = "interview" # off (default) | interview | auto
| Mode | What happens after you decline deployment |
|---|---|
off |
The project finishes locally, as it always has. |
interview |
A publish_interview gate shows exactly what would be pushed and where, and waits. |
auto |
The proposal is published with no gate. |
Settings (all optional): visibility (private by default, or public), draft (true by
default), base, remote, owner. See [publish].
What it proposes¶
- A project whose checkout has a remote gets its integration branch pushed and a draft pull request opened into the remote's default branch.
- A project with no remote gets a new private GitHub repository, named from the project,
and the branch pushed to it as
main. - If an earlier attempt created the repository but did not get to push, the retry pushes to it and does not create another.
The title and body come from the spec's objective and criteria. Nothing is forced, and the base branch is never pushed to.
The interview¶
vibey gates shows the gate and the exact command to answer it. The prompt reads like:
The project is finished and reviewed. Publish it?
Push branch vibey/.../integration to origin and open a draft pull request into develop.
Title: feat: Fold Humbleberger Ministries into the site.
vibey answer GATE_ID --choice accept_defaults # publish exactly that
vibey answer GATE_ID --choice skip # finish locally (the default)
vibey answer GATE_ID --raw '{"choice": "custom", "draft": false, "title": "..."}'
custom changes only the fields you name: title, body, base, draft, visibility,
repo, owner, description. A field that is not one, or a name that could be read as an
option, is refused and the gate asks again, saying what to fix. The gate has no timeout default:
silence publishes nothing.
Unattended¶
vibey worker --auto-publish answers the interview accept_defaults, for one project. It is a
separate flag from --auto-accept-all on purpose: it is the one acceptance that sends work off
the machine. For an unattended run that publishes a draft pull request:
vibey worker --project ID --auto-accept-all --auto-publish
or set mode = "auto" and no gate is raised at all.
What it needs, and what it refuses¶
gitand the GitHub CLIgh, logged in (gh auth login). If not, the job parks on anengine_misconfiguredgate that says which: fix it and answer anything to retry. vibey does not passGH_TOKENorGITHUB_TOKENtogh.- A work item can write the repository's own git config, and a push runs whatever that config
names. So publishing refuses a repository whose config sets
core.sshCommand,core.gitProxy,core.askPass, a credential helper and similar, naming the key to remove; it runs git with hooks off; and it refuses a remote that is not an https or ssh address. - It does not decide where the work goes: the plan names the remote. In
interviewmode, read the remote in the prompt;autoand--auto-publishtrust the checkout's remote, so use them on repositories you control.
What it records: PublishCompleted (kind, URL, branch, draft, visibility) or PublishSkipped
on the ledger. The published form of the ledger leaves out the URL and branch.