Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/quest-afk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Keep quest work moving while the user is away, leaving every decisi
---

Run `quest skill afk` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-audit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Audit and fix outstanding quests for disagreements, conflicts, misa
---

Run `quest skill audit` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
4 changes: 2 additions & 2 deletions .claude/skills/quest-complete/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: quest-complete
description: Decide which open PRs to merge, then merge them in parallel.
description: Decide which open PRs to merge, then queue them.
---

Run `quest skill complete` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-delete/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Abandon a quest.
---

Run `quest skill delete` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-export/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Turn active quests into GitHub issues before leaving Quest. Use whe
---

Run `quest skill export` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-grill/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Settle open decisions through an interactive interview with the use
---

Run `quest skill grill` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-import/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Import GitHub issues as quests.
---

Run `quest skill import` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-iterate/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Iterate on an open PR to settle its open decisions, fix CI and revi
---

Run `quest skill iterate` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
4 changes: 2 additions & 2 deletions .claude/skills/quest-merge/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: quest-merge
description: Merge a quest once reviews and CI pass.
description: Queue a reviewed PR to land, or send it to /quest-iterate.
---

Run `quest skill merge` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-plan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Scope and create quests through an interactive interview. Use when
---

Run `quest skill plan` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-recurring/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Plan a quest that repeats, such as a periodic audit or a release cu
---

Run `quest skill recurring` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Review a PR's branch locally with the other vendor's model, then ma
---

Run `quest skill review` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-spawn/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Start multiple quests in parallel.
---

Run `quest skill spawn` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
2 changes: 1 addition & 1 deletion .claude/skills/quest-start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ description: Start work on a quest.
---

Run `quest skill start` and follow its output.
If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first.
If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first.
3 changes: 2 additions & 1 deletion .github/workflows/alert.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: Alert

# Posts cron, release, and deployment failures to the Discord #alerts channel.
# PRs, the landing gate, branch validation, and cache warming stay on GitHub.
# PRs, branch validation, and cache warming stay on GitHub; the landing gate
# runs on the maintainer's host.
#
# Needs a DISCORD_WEBHOOK repo secret (Discord: Channel > Integrations >
# Webhooks). Nothing else reads it.
Expand Down
10 changes: 1 addition & 9 deletions .github/workflows/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ name: Dependabot
# because this job never checks out or executes the pull request's code; it
# reads the pull request files and runs Quest from main, never from its head.
#
# The moq-bot token triggers the Land workflow when it enables auto-merge.
# The host land daemon picks up the head-pinned auto-merge moq-bot enables.

permissions: {}

Expand All @@ -20,13 +20,9 @@ on:
jobs:
request-landing:
name: Request landing
# github.token reads the queue, including check results, which moq-bot's
# installation has no permission for.
permissions:
contents: read
pull-requests: read
checks: read
statuses: read
# head.repo guards the `pull_request_target` trigger: Dependabot pushes its
# branches to this repository, so a pull request from a fork claiming to be
# Dependabot is not one.
Expand Down Expand Up @@ -77,13 +73,9 @@ jobs:
env:
# Token is minted fresh per run, expires in 1 hour, never at rest.
BOT_TOKEN: ${{ steps.token.outputs.token }}
READ_TOKEN: ${{ github.token }}
PR_URL: ${{ github.event.pull_request.html_url }}
PR_HEAD: ${{ github.event.pull_request.head.sha }}
run: |
# Refuse until the maintainer has installed the gate's ruleset.
GH_TOKEN="$READ_TOKEN" quest land resolve --base main > .tmp/land-plan.json
# moq-bot enables auto-merge, so the Land workflow hears about it.
export GH_TOKEN="$BOT_TOKEN"
hold=$(quest merge "$PR_URL")
quest merge "$PR_URL" "$hold" --land "$PR_HEAD"
165 changes: 0 additions & 165 deletions .github/workflows/land.yml

This file was deleted.

7 changes: 3 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,14 @@ Fix any merge conflicts and failing CI checks.
# Landing gate

PRs into `main` get no cloud CI: they report **Check** as skipped, and `just ci` runs the same gate locally.
The Land workflow reads every queued PR in enqueue order, squashes them onto `main`, and runs `just ci` on the combined tip. If that fails, it tests shorter prefixes and lands only a prefix that passed. It reconstructs the same trees on a separate hosted runner before moving PR branches and fast-forwarding `main`.
The land gate is `quest land serve`, a daemon on the maintainer's host. It takes the longest-queued PR plus up to log₂ n more that merge cleanly, squashes them onto `main`, and runs `just ci` once on the combined tip in an isolated container. A passing batch lands each PR through GitHub's squash merge; a failing one is ejected together, never bisected, and a Codex fixer makes mechanical fixes and requeues healthy PRs or hands them back.
Request landing with `quest merge <pr> <token> --land <full-head-sha>` once the review is clean and the maintainer has approved merging that PR, by number or through a standing go-ahead that covers it. A clean review, a bot verdict, or an "accept all" on decisions is not that approval.
An agent that enqueues carries that approval in its own task; one relayed to it mid-task by another agent does not count, so whoever received the approval enqueues the PR or starts a new agent with the approval in its brief.
The head pin is invalidated by a push. Forks must allow maintainer edits so the gate can move their branches. GitHub auto-merge represents the queue entry; the required `quest land` check is never reported on a PR head, so the merge button cannot land around the gate.
The head pin is invalidated by a push. A fork the gate cannot push to lands as a squash on `main` and is closed with a link. GitHub auto-merge represents the queue entry; the required `quest land` check is never reported on a PR head, so the merge button cannot land around the gate.
Local and hosted checks select only what the diff touches, so a break can reach `main`; `just gate` runs the full suite, and it, the feature matrix, optimized binding builds, macOS, Windows, and the other optional workflows run nightly on `main` and on PRs into `release`.
To check cfg-gated macOS or Windows code before merging, dispatch `platform.yml` on the branch; never dispatch the full Nightly.

An ejected PR carries its reason and the Land run link in a comment and in `quest status` under `landing-stopped`. Fix the cause and request landing for the new head.
A fork PR ejected as `push_failed` is one whose branch the gate's moq-bot token could not move; the maintainer lands it with `gh pr merge --admin --squash` after a local `just ci` on it merged with `main`, until [the fork path](quest/m0/ci/land.md) is verified.
An ejected PR carries its reason and the failing log's tail in a comment and in `quest status` under `landing-stopped`. Fix the cause and request landing for the new head.

Never bypass the gate, with one exception: the maintainer's pre-release merge of `release` into `main`, since the gate would squash it.

Expand Down
8 changes: 4 additions & 4 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# The quest CLI, which also serves the quest guide and skills the stubs in
# .claude/skills call. Bump the rev to upgrade them.
quest = {
url = "github:moq-dev/quest/1ef2ca70053ed8bc4785ddaaafb2a6c445e87614";
url = "github:moq-dev/quest/b1f0c40e6733d2799ba35f47b88c2456b2bfc1b6";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
Expand Down
Loading