Skip to content

quest: plan moq's 2026-11-03 /quest-complete follow-ups - #453

Merged
kixelated merged 2 commits into
mainfrom
quest-plan/moq-complete-followups
Nov 3, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest-plan/moq-complete-followups

Conversation

@kixelated

@kixelated kixelated commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Running quest's skills on moq-dev/moq on 2026-11-03 turned up four gaps. The maintainer approved planning them:

  1. The land fixer requeued moq-dev/moq#6949 while a /quest-iterate hold was active. It also requeued without running moq's JavaScript check, and the next build failed on it.
  2. /quest-complete offered a grouped "merge all 20 landable PRs" option, even though the skill already says to ask one question per PR. The maintainer: "Ask per PR. Update quest to always ask per PR."
  3. The guide and skills say to record a decision in the quest's Plan. When the PR finishes and deletes the quest, that record is deleted with it.
  4. moq runs its worktree hooks as nix run "${CLAUDE_PROJECT_DIR}#quest" -- worktree hook, so agents use the quest moq pins (moq-dev/moq#7674). quest init recognizes its hook only by the exact quest worktree hook, so it refuses to run in moq. The maintainer decided init treats any command hook ending in worktree hook as its own (✅ that; rejected: a configured hook command, no change).

Changes

  • quest/m0/land-fixer/holds.md (new, [S]): quest land watch checks for a hold before it starts a fixer job and again before it pushes or re-enqueues. Today src/cli/land-watch.ts and land-watch-fix.ts never read hold labels. The frozen batching gate is out of scope.
  • quest/m0/land-fixer/checks.md (new, [S]): assets/land-fix.md makes the fixer run the repository's own check and test commands, such as just check and just test. Today it says only "build and test".
  • quest/m0/complete-per-pr.md (new, [XS]): complete.md forbids offering any option that covers more than one PR. A blanket answer the maintainer volunteers still counts.
  • quest/m0/decision-records.md (folded in): a decision goes in the quest Plan, or in the PR's ## Decisions if the PR deletes the quest.
  • quest/m0/wrapped-hooks.md (new, [XS]): isQuestHook (src/core/init.ts) accepts any command hook ending in worktree hook. quest uninstall shares that check, so it removes wrapped hooks too.

Choices made without asking

  • Item 1 became two quests, not one. Respecting holds is watcher code, and running checks is the fixer's prompt. Either can land alone, and the guide says to split independently completable work.
  • Both item 1 quests go under the land fixer epic. It owns what the fixer does with a PR, whatever started it. They are ranked above the workflow-permission quest, which waits on the maintainer.
  • Item 3 is folded into the decision-records quest. That quest already edits the same recording instructions in plan.md and grill.md.
  • Milestone m0 for all three. By m0's README, m0 is adoption on moq-dev's own repositories, and moq-dev/moq uses /quest-complete and the land fixer every day.
  • Per-PR picks is ranked right after the Kix decision UI. m0's Plan (decided 2026-11-01) puts land work first, then Kix, then the rest of m0.
  • Item 4 is a new quest, ranked right after Worktree hooks here. The only existing hooks quest, quest/m0/worktree-hooks.md, installs the hooks in this repository and is held by moq-dev/quest#423, which uses the plain command. No quest covers how init matches its hook.
  • The holds quest leaves one choice open for its starter, with a recommendation. The choice is what happens to a held PR's pick. The recommendation is to end the pick, the same way a person's removal from the queue does.

Search: the quest tree, git history for deleted quests, and open PRs. moq-dev/quest#452 touches assets/AGENTS.md and spawn.md, but for follow-up planning, so it does not overlap. No other overlap.

Validation

  • quest check --base origin/main (built from this checkout): 70 documents ok.
  • just check passes.

Review

quest review --base origin/main, Codex gpt-6.1-sol, medium effort. A new session started because the base's instructions changed. Round 1 reviewed head 80b80520021c6850fd23b675d75128dc986e01f7: no findings.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

Three follow-ups from running quest's skills on moq-dev/moq:

- The land fixer epic gains two quests: the watcher leaves a PR another
  session holds alone, and the fixer runs the repository's own checks,
  such as moq's JavaScript type check, before it requeues.
- /quest-complete offers no grouped or blanket pick across PRs.
- The decision-records quest also says where a decision goes when the PR
  deletes its quest: the PR's Decisions instead of the quest Plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated
kixelated marked this pull request as ready for review November 3, 2026 19:02
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 88905e19-e537-4f07-aee1-50061bce221b
Commits

Reviewing files that changed from the base of the PR and between 97655f2 and 80b8052.

Files selected for processing: 7
  • quest/m0/README.md
  • quest/m0/complete-per-pr.md
  • quest/m0/decision-records.md
  • quest/m0/land-fixer/README.md
  • quest/m0/land-fixer/checks.md
  • quest/m0/land-fixer/holds.md
  • quest/m0/wrapped-hooks.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes: planning docs for three follow-ups that running quest's skills on moq-dev/moq turned up. This is a docs-only change; I verified every source-code and skill claim each quest makes, and they all hold up:

  • holds.md — isHoldLabel does live at src/core/hold.ts:27 and accepts any quest:* label except quest:merge, so quest:active and an older pin's quest:iterate both hold, as the goal states. The two watcher files (src/cli/land-watch.ts, src/cli/land-watch-fix.ts) really never read PR labels for holds. The endPick recommendation matches the code: src/cli/land-watch-fix.ts:143 ends a pick "as a writer's push or a person's removal does", and the proposed open question for the starter (end the pick vs. wait out the hold) has enough context to answer.
  • checks.md — assets/land-fix.md:51 says exactly "Before reporting fixed or requeue, build and test the packages the PR and your fix touch", which supports the proposed cause for the moq-dev/moq#6949 miss. The fallback for a repository that names no check command is spelled out, so the fixer's prompt stays actionable.
  • complete-per-pr.md — assets/skills/complete.md:20 does say "one question per PR, never grouping PRs", and line 30 frames a blanket answer as valid, so the diagnosed tension between the two paragraphs is real. The guidance to also check unblock.md and afk.md points at skills that do put PR picks to the user.
  • decision-records.md — folding the where-to-record-a-decision work in here is apt: plan.md:26 and unblock.md:28 both send decisions to "the quest's Plan" while a quest-completing PR deletes that file, and iterate.md:19 records in the PR description without naming a ## Decisions section. The quest name and README/m0-index entries were updated to match the widened goal.
  • READMEs — the m0 index entry and the land-fixer epic's Required list both follow the existing link-list style, and the ranking claim ("land work first, then Kix") matches m0's recorded 2026-11-01 decision.

quest check --base origin/main passes on this branch: 69 documents ok.

Pullfrog  | View workflow run | Using glm-5.3-flash | 𝕏

moq-dev/moq runs its worktree hooks through its flake's pinned quest
(`nix run ...#quest -- worktree hook`), and `quest init` refuses it
because it matches only the exact `quest worktree hook`. The maintainer
decided init treats any command hook ending in `worktree hook` as its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes: incremental re-review of the new commit on this PR since the prior Pullfrog review (27f8241). All documentation-only.

  • Added quest/m0/wrapped-hooks.md — an [XS] quest for quest init accepting any command hook whose arguments end in worktree hook (moq-dev/moq's nix run "${CLAUDE_PROJECT_DIR}#quest" -- worktree hook wrapper). It carries the maintainer's decision record (wrapped match ✅; configured hook command and no-change rejected), implementation guidance for isQuestHook and quest uninstall, and a test plan covering init, re-init, and uninstall.
  • Indexed the new quest in quest/m0/README.md immediately after [Worktree hooks here], matching the doc's stated rank.
  • Appended a missing trailing newline in quest/m0/land-fixer/holds.md — no content change.

I re-verified the new doc's claims against this checkout: isQuestHook (src/core/init.ts:240) does count wrapped hooks as someone else's by matching only handler.command === HOOK_COMMAND, and uninstall shares that exact check (src/cli/setup.ts imports the same match at line 30 and filters with it at line 242). quest check --base origin/main passes on the head commit: 70 documents ok.

(written by GLM-5.3-Flash)

Pullfrog  | View workflow run | Using glm-5.3-flash | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 6167133 Nov 3, 2026
11 checks passed
@kixelated
kixelated deleted the quest-plan/moq-complete-followups branch November 3, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant