Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
44d63ff
chore(quest): claim quest/m0/token-waste/child-lists.md
kixelated Nov 7, 2026
f681f07
feat!: quest check rejects epics listing their children
kixelated Nov 7, 2026
c4b5b2d
Merge remote-tracking branch 'origin/main' into quest/m0/token-waste/…
kixelated Nov 7, 2026
90bc7cb
Merge remote-tracking branch 'origin/main' into HEAD
kixelated Nov 7, 2026
3e64948
fix: dedupe unmigrated epic blockers; let the flaky fixer satisfy an …
kixelated Nov 7, 2026
6be3d29
Merge remote-tracking branch 'origin/main' into HEAD
kixelated Nov 7, 2026
e735ae9
quest: strip m2's child list after merging main
kixelated Nov 7, 2026
e68f184
fix: merge base and resolve quest tree migration conflicts
Nov 7, 2026
8e020c7
Merge remote-tracking branch 'origin/main' into child-lists
kixelated Nov 7, 2026
4bcc55f
fix(check): drop held links after promoting headings and after mv
kixelated Nov 7, 2026
9dbdfae
fix(check): check repair preconditions before promoting headings
kixelated Nov 7, 2026
fb62609
Merge origin/main
kixelated Nov 7, 2026
c0f9388
Merge origin/main
kixelated Nov 7, 2026
1f65a8b
quest: keep main's sandbox PR-trigger notes
kixelated Nov 7, 2026
e9e2e0b
Merge origin/main
kixelated Nov 7, 2026
d4ef223
Merge base and preserve quest deletions and child-list migration
Nov 7, 2026
23f0376
Merge origin/main; drop child lists from conflicted READMEs
kixelated Nov 8, 2026
79a2687
Merge origin/main; drop the queue-watcher child list
kixelated Nov 8, 2026
e1a88ce
Keep main's queue-watcher README text, dropping only its child list
kixelated Nov 8, 2026
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
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ quest rm -r quest/m1/drain
under a moved epic. `rm` drops each `Required`, `Related`, or `Closes` entry
that links to what it deleted, and the heading if that was the last entry.
It also drops every `Required` link to a finished milestone, including one it
just finished, but keeps the root's listing of the milestone.
just finished, and every epic's `Required` link to a quest in its own folder.
Both stage the change, print one line per file (`R from -> to`, `D path`, or
`M path`), and report on stderr any other mention of the path, such as prose
or files outside `quest/`, without editing it. They run `quest check` on the
Expand Down Expand Up @@ -333,12 +333,15 @@ A clean merge can still leave this branch's list links to quests the base
finished, which `quest check` then flags. `quest check --fix` drops every
`Required`, `Related`, or `Closes` entry linking to a quest deleted in the
history of `HEAD`, and of `MERGE_HEAD` during a merge, that the working tree
lacks, and prints `M path` for each edited document. It then promotes a section
heading written below `##` to `##` where nothing but its own content follows it
before the next `##` heading, and no `##` section of that name exists. It leaves
the edits unstaged and refuses while a quest file has unresolved conflicts. A
quest moved rather than deleted, a link that never named a quest, a link in
prose, and any other misleveled heading stay for `quest check` to report.
lacks, and every epic's `Required` entry naming a quest in its own folder,
which the epic already waits for, and prints `M path` for each edited
document. That part also migrates a tree from before epics stopped listing
their children. It then promotes a section heading written below `##` to `##`
where nothing but its own content follows it before the next `##` heading, and
no `##` section of that name exists. It leaves the edits unstaged and refuses
while a quest file has unresolved conflicts. A quest moved rather than deleted,
a link that never named a quest, a link in prose, and any other misleveled
heading stay for `quest check` to report.

## Wait for pull request activity

Expand Down
6 changes: 0 additions & 6 deletions quest/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,3 @@ versioned Markdown, with a standalone CLI and a reversible adoption path.
`m0` is adoption on moq-dev's own repositories, `m1` the public release,
and `m2` later work. Add later horizons when concrete work warrants them,
keeping milestone numbers stable as earlier milestones complete.

## Required

- [M0: moq-dev adoption](/quest/m0/README.md) - kix at quest.moq.dev, used daily on moq-dev/moq, moq-dev/quest, and moq-dev/moq.pro, beside the standalone CLI
- [M1: Public release](/quest/m1/README.md) - kix.quest open to any maintainer, with onboarding, contributor sandboxing, the themed site, and launch material
- [M2: Later work](/quest/m2/README.md) - cloud runners, a native mobile app, shared runners, and donated reviews and CI
14 changes: 0 additions & 14 deletions quest/m0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,3 @@ ownership-manifest design:
limits). Prefer offline, deterministic commands, and keep GitHub calls in
the CLI rather than skill prose.
- Repository-specific rules stay in the repository's own root instructions.

## Required

- [Land through a serial merge queue with an async fixer](/quest/m0/queue-watcher/README.md) - GitHub's merge queue, or the watcher's own where GitHub has none, lands one PR at a time, and a host watcher fixes and re-enqueues each PR it drops
- [Kix decision UI](/quest/m0/kix/README.md) - planning and implementation through prompts and summaries, run on the maintainer's own runners
- [Route quests to models by size](/quest/m0/model-routing/README.md) - `/quest-spawn` starts each quest on the first model of its size's ranked list that can run, reviews rank the same way, and PRs record size, implementer, and reviewer
- [Repositories and hosts follow quest's main](/quest/m0/pin-sync.md) - every push to main reaches each enrolled repository and host through a bot-queued pin bump
- [Cut agent token waste](/quest/m0/token-waste/README.md) - sessions stop paying for loading rules, a second review pass, polling, oversized coordinators, and merge churn
- [Model check](/quest/m0/model-check.md) - recurring: the first audit of the routed PRs retunes the built-in size lists
- [Codex cloud off](/quest/m0/codex-cloud-off.md) - automatic Codex cloud reviews stop once no open PR relies on them
- [Codex project-config skip](/quest/m0/codex-project-config.md) - once Codex keeps a supported way to skip a project's `.codex/` layer, reviews keep the user's config
- [Agents get the dev shell from user settings](/quest/m0/user-dev-shell/README.md) - maintainers' own Claude and Codex settings load the dev shell; repositories drop dev-shell hooks, Quest worktree hooks, and `nix develop` instructions, and `quest init` writes no hooks
- [claude rm upstream report](/quest/m0/claude-rm-upstream.md) - posting approved: ask Claude Code to run `WorktreeRemove` instead of advising an unlock
- [Three generic rules in the shared context](/quest/m0/context-rules.md) - `quest context` adds matching conventions, never loosening a flaky test, and short names under a namespace
7 changes: 0 additions & 7 deletions quest/m0/kix/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,10 +136,3 @@ fixes what it finds:
[moq-dev/quest#209](https://github.com/moq-dev/quest/pull/209) assumes
is the comparison GitHub makes. Try it with a real PR that edits a
workflow (decided 2026-10-24, user).

## Required

- [Operator setup](/quest/m0/kix/operator-setup.md) - pilot installations and a verified test PR on moq-dev/moq and moq-dev/quest
- [Private repositories](/quest/m0/kix/private.md) - moq-dev/moq.pro enrolls, visible only to signed-in users who can read it
- [Runner account pool](/quest/m0/kix/cliproxy.md) - the runner routes every Claude and Codex job and review through its own CLIProxyAPI pool
- [Web execution](/quest/m0/kix/execution.md) - spawn and iterate through the UI, ending in contribution PRs
8 changes: 0 additions & 8 deletions quest/m0/queue-watcher/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,11 +144,3 @@ Shared shape, for the children to follow:
class (`QUEST_GATE_PRIORITY=1`, which waits for memory but never for load)
lets them admit ahead of agent load, set from moq's workflow or the
runner's environment.

## Required

- [The other repositories follow](/quest/m0/queue-watcher/follow.md) - quest, rind and rust2 are cut over and landing; waits for a fork PR to land through one of their queues
- [Harden the queue runners](/quest/m0/queue-watcher/runners.md) - each queue runner runs only its repository's queue workflow, and every outside fork PR needs approval
- [moq.pro lands main through the own queue](/quest/m0/queue-watcher/pro-cutover.md) - moq.pro's `main` leaves the batching gate for the watcher's own queue
- [Retire the batching gate](/quest/m0/queue-watcher/retire.md) - once no repository lands through `quest land serve`, its batching code and host units go
- [kix.quest shows each repository's landing queue](/quest/m0/queue-watcher/queue-page.md) - one page per repository with its queue order, current build, and recent drops, in both modes
7 changes: 0 additions & 7 deletions quest/m0/token-waste/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,6 @@ Decision prompts, chosen options marked ✅:
semver-breaking features) is moq-dev/moq's own plan: ✅ re-plan moq
separately (rejected: make it quest's convention; not now).

## Required

- [Epics list no children](/quest/m0/token-waste/child-lists.md) - an epic's children are its directory, so finishing a quest edits no README
- [Mechanical rules become checks](/quest/m0/token-waste/rule-checks.md) - hooks enforce em dashes, push refspecs, no rebase or force-push, the footer, and `.tmp/`, and their prose leaves the always-loaded rules
- [quest usage](/quest/m0/token-waste/usage.md) - per quest and PR: which models and efforts worked on it, their tokens and API-equal cost, and how the work went; the epic's re-measure runs it
- [Point to token-max](/quest/m0/token-waste/token-max.md) - `SETUP.md` recommends the standalone settings doctor, and the re-measure runs it

## Related

- [Model check](/quest/m0/model-check.md) - audits the size tables the review quest changes
41 changes: 0 additions & 41 deletions quest/m0/token-waste/child-lists.md

This file was deleted.

4 changes: 0 additions & 4 deletions quest/m0/user-dev-shell/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,3 @@ The user-level hooks live in [kixelated/dotfiles](https://github.com/kixelated/d
installed into each Claude profile's `settings.json` and Codex's user
config, and generalize this repository's `.claude/hooks/direnv.sh` and
moq-dev/moq's `.codex/hooks/direnv.sh`.

## Required

- [moq.pro drops its Codex dev-shell config](/quest/m0/user-dev-shell/repo-config.md) - once a fresh Codex session there loads the dev shell without the repo hooks
13 changes: 0 additions & 13 deletions quest/m1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,3 @@ earlier "Later work" milestone became m2.
- ✅ Move to kix.quest in m1
- Stay on quest.moq.dev
- Decide later

## Required

- [User state in their RunnerHub](/quest/m1/user-state.md) - each user's runners, jobs, inbox, and push subscriptions live in their Durable Object, and D1 keeps repository data and other cross-user state
- [Open kix.quest](/quest/m1/open.md) - the Worker moves to kix.quest and any owner may enroll
- [Release with worktree hooks](/quest/m1/release.md) - tag a release that has `quest worktree hook`, so SETUP.md's release routes work
- [Kix for any repository](/quest/m1/kix/README.md) - onboarding, read-only CI checks, contributor sandboxing, and the maintainer guide
- [Quest log theme](/quest/m1/theme/README.md) - an MMO-style identity, copy, board, landing page, and CLI output for the demo and launch
- [Launch material](/quest/m1/launch.md) - README, quickstart, demo, comparison, and launch-post drafts
- [Gate CPU weight](/quest/m1/gate-cpu-weight.md) - gated commands run at a lower CPU weight than the interactive session, so concurrent gates no longer starve the desktop
- [Retire Decisions needed](/quest/m1/decisions-needed.md) - only `## Waiting` hands a draft back, once no open draft uses the old heading
- [Bun EFAULT report](/quest/m1/bun-efault.md) - report concurrent `rmSync` `EFAULT` on Windows, and drop the workaround once Bun fixes it
- [Model check](/quest/m1/model-check.md) - recurring each milestone: the built-in implementation and review tables use the newest models at efforts retuned from outcomes, and the live sandbox test passes
5 changes: 0 additions & 5 deletions quest/m1/kix/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,3 @@ unconfined on their own machines.
Moved from m0 on 2026-10-30 (user, /quest-plan): moq-dev's own repositories
already carry Quest, are enrolled by the operator, and are worked on by their
maintainers, so they need none of this first.

## Required

- [Contributor sandboxing](/quest/m1/kix/sandbox/README.md) - contributors' PR heads build in a VM, on stock Ubuntu and verified on macOS
- [Onboarding guide](/quest/m1/kix/guide.md) - a complete maintainer path, from runner setup through a reviewed PR
5 changes: 0 additions & 5 deletions quest/m1/kix/sandbox/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,3 @@ Shipped in [moq-dev/quest#212](https://github.com/moq-dev/quest/pull/212)
- Sources:
[Claude Code sandboxing](https://code.claude.com/docs/en/sandboxing)
and [sandbox-runtime](https://www.npmjs.com/package/@anthropic-ai/sandbox-runtime).

## Required

- [macOS sandbox](/quest/m1/kix/sandbox/macos.md) - the boundary verified under Seatbelt, then the answer-approval gate removed
- [Untrusted devShells](/quest/m1/kix/sandbox/vm.md) - untrusted PR heads build their devShell in a per-job VM
4 changes: 0 additions & 4 deletions quest/m1/theme/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,6 @@ Decided while planning on 2026-10-05, amended 2026-10-14 where noted:
uses these terms. A blocked waypoint's tooltip lists what it needs under
"Required:".

## Required

- [Landing page](/quest/m1/theme/landing.md) - the home page's calls to action lead to sign-in, onboarding, and the setup paste

## Related

- [Launch material](/quest/m1/launch.md) - posts, quickstart, demo, and comparison written in the same voice
12 changes: 0 additions & 12 deletions quest/m2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,3 @@
Extend kix.quest with cloud runners, a native mobile app, runners shared
with other projects, donated reviews and CI, stronger isolation, and
additional login providers. This milestone does not gate the public release.

## Required

- [Cloud runners](/quest/m2/cloud/README.md) - one-click free cloud runners, API-key and donor funding, then paid compute
- [Native mobile app](/quest/m2/mobile-app.md) - push notifications with quick replies to decisions
- [Shared runners](/quest/m2/donor-runner.md) - offer your runner and accounts to other projects
- [Review and check automation](/quest/m2/automation/README.md) - donated reviews, CI, and a shared Nix cache
- [opencode reviewers](/quest/m2/review-harnesses.md) - `quest review` runs opencode read-only, for the council's DeepSeek member
- [Review council](/quest/m2/council.md) - `/quest-council` reviews a PR with one blind model per maker and merges their findings with agreement counts
- [Donor isolation](/quest/m2/donor-isolation.md) - stronger boundaries for untrusted shared jobs
- [ChatGPT hosted runs](/quest/m2/chatgpt-hosted.md) - conditional on provider approval and current terms
- [ChatGPT approval](/quest/m2/chatgpt-waitlist.md) - resolve hosted-use approval before implementation
6 changes: 0 additions & 6 deletions quest/m2/automation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,3 @@ authorized agent reviews and CI capacity using ordinary GitHub interfaces.
Decided 2026-10-13: C1 first, then C2. Existing repository checks remain part
of implementation; this epic adds independent donated review and CI jobs.
No custom review database or git-note approval protocol is introduced.

## Required

- [Agent reviews](/quest/m2/automation/review.md) - attributed, advisory GitHub reviews
- [Donated checks](/quest/m2/automation/checks.md) - repository-defined check execution with explicit trust
- [Nix cache](/quest/m2/automation/cache.md) - optional main-only signed build cache
7 changes: 0 additions & 7 deletions quest/m2/cloud/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,3 @@ Decided 2026-10-15 in the decisions-not-implementations interview:
for the cloud runners that depend on it.
- Funding setup and operating guidance stay in existing service
documentation; each implementation updates the docs it changes.

## Required

- [API funding](/quest/m2/cloud/funding.md) - maintainer API keys, the credential proxy, and durable usage accounting
- [Hosted runners](/quest/m2/cloud/runners.md) - free, capped cloud runners enabled with one click
- [Donor allocations](/quest/m2/cloud/donors.md) - shared API budgets after maintainer-funded cloud runners work
- [Paid compute](/quest/m2/cloud/billing.md) - charge for cloud runner compute once free capacity is not enough
14 changes: 10 additions & 4 deletions src/cli/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ export function main(argv: string[], out: Output): number | Promise<number> {
"first: a stale base can predate the quest and skip it.\n\n" +
"With --fix, first drop every Required, Related, or Closes entry that links to a quest deleted in " +
"the history of HEAD, and of MERGE_HEAD during a merge, that the working tree lacks, as quest rm " +
"does, such as the quests a merged base finished, with any heading left empty. It then promotes a " +
"does, such as the quests a merged base finished, and every epic's Required entry naming a quest in " +
"its own directory, which the epic already waits for, with any heading left empty. It then promotes a " +
"section heading written below ## to ## where nothing but its own content follows it before the next " +
"## heading, and no ## section of that name exists. It prints M for each edited document and leaves " +
"the edits unstaged. A quest moved rather than deleted, a link that never " +
Expand All @@ -179,13 +180,18 @@ export function main(argv: string[], out: Output): number | Promise<number> {
)
.option("--base <ref>", "Also check the quest branch's diff from its merge base with this ref")
.option("--branch <name>", "The PR's head branch, when it differs from the current branch (needs --base)")
.option("--fix", "First drop list links to quests the history deleted, and promote misleveled section headings")
.option(
"--fix",
"First drop list links to quests the history deleted and epics' links to their own quests, and promote misleveled section headings",
)
.action((options: { base?: string; branch?: string; fix?: boolean }) => {
if (options.branch !== undefined && options.base === undefined) {
throw new UsageError("--branch requires --base");
}
if (options.fix) {
const edited = new Set([...fixLinks(root()), ...fixHeadings(root())]);
// fixLinks checks the repair preconditions before anything is written; it runs again
// after promotion, since a promoted `Required` can hold links it then drops.
const edited = new Set([...fixLinks(root()), ...fixHeadings(root()), ...fixLinks(root())]);
for (const line of [...edited].sort()) print(line);
}
const tree = checkout(root(), warn);
Expand Down Expand Up @@ -1315,7 +1321,7 @@ export function main(argv: string[], out: Output): number | Promise<number> {
"Delete a quest, or an epic and the quests under it, with git rm, and drop every Required, Related, " +
"or Closes entry that links to it, with any heading left empty. It also drops every Required link to a " +
"finished milestone, one whose directory holds no other quest and whose README has no Required left, " +
"except the root's own listing. The change is staged.\n\n" +
"and every epic's Required entry naming a quest in its own directory. The change is staged.\n\n" +
"Refuses outside a git work tree. An epic is its directory or README; removing one that holds other " +
"quests requires -r. The root epic and milestones are permanent.\n\n" +
"Prints D for each deleted quest and M for each edited document. Mentions that are not list entries, " +
Expand Down
Loading
Loading