Repository navigation
feat(check): drop links to finished quests after a local merge, upgrade old merge drivers, and keep quest-pinned current - #427
Conversation
Quest-Claim: 84012bb4359c43fa
…pgrade old merge drivers quest check --fix drops every Required, Related, or Closes entry linking to a quest deleted in the history of HEAD (and MERGE_HEAD during a merge) that the working tree lacks, as quest rm does, so merging the base needs no hand edits for the quests it finished. Renames, mistyped links, and prose stay for the check to report; it refuses while a quest file is unmerged and leaves its edits unstaged. The guide's merge line points at it. Any quest command now replaces a merge.quest.driver an older quest registered with the current DRIVER, keeping custom drivers. Bump quest-pinned to current main, and give it its own Dependabot nix group without the cooldown so the dev shell's merge driver stays current. Finishes quest/m0/merge-driver-upkeep.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
quest land watch: the merge queue removed this pull request at afbf1f9 because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
|
quest land watch: armed auto-merge on this pull request at 7e95115, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix ( (written by quest land watch) |
Finishes quest/m0/merge-driver-upkeep.md: local merges, old merge drivers, and the dev shell's
quest-pinnedstay current.Changes
quest check --fix(src/cli/move.tsfixLinks, wired insrc/cli/main.ts). It drops everyRequired,Related, orClosesentry that links to a quest deleted in the history ofHEAD(and ofMERGE_HEADduring a merge) and missing from the working tree. A heading left empty goes too. This is the same coreremove()edit thatquest rmandquest land'sprunemake (moq-dev/quest#353).--find-renames). A link to a path that never held a quest, and a link in prose, stay for the check to report.--relative, so a--rootnested in its repository works.M pathfor each edited document, leaves the edits unstaged, and refuses while a quest file has unresolved conflicts. Then the usual check runs (with--basetoo, if given).assets/AGENTS.md) and README's "Merge quest lists" section point at it.src/cli/resolve.tsOLD_DRIVERS,src/cli/setup.tsregister). Any command, andquest init, now replaces amerge.quest.driverset to the exact string from moq-dev/quest#219 or moq-dev/quest#256 with the currentDRIVER. Any other value, a custom driver, stays. Thequest resolvehelp and README say so, replacing README's "clear it by hand" advice. (The maintainer's main clone still has feat(resolve): merge concurrent quest link-list edits with a git merge driver #219's driver, so this upgrades it on the nextquestcommand.)flake.lockbumpsquest-pinnedfrom 7a191e6 (2026-11-01) to acb8682 (currentmain), so the dev shell'squestno longer reads a leftoverquest:mergelabel as a hold..github/dependabot.yml's weekly nix update givesquest-pinnedits own group, listed first, so a nixpkgs bump that needs work (like moq-dev/quest#281) doesn't hold it back. It also exempts it from the 7-day cooldown.flake.nixcomment says so.quest rmdeleted the quest and itsquest/m0/README.mdentry.Choices made without asking
merge-base HEAD <merge-head>andHEAD". This PR uses "deleted anywhere inHEAD's (andMERGE_HEAD's) history and absent from the working tree" instead, so a plainquest check --fixworks before, during, and after the merge, with no ref to pass.Moutput.rmandmvstage becausegit rm/git mvdo. A check's fix stays unstaged, like a formatter's, so it never stages a user's unrelated hunks in the same file.merge.quest.driveris an old quest string from global config,questwrites the current one to the clone's local config and never edits the global file.Limitations
quest-pinned(aflake = falseGitHub input added on 2026-11-01). Its next weekly run will show whether it opens the group's PR. If it doesn't,nix flake update quest-pinnedby hand still works.main, which doesn't include this PR. The driver upgrade andcheck --fixreach the dev shell's pinnedquestwith the next bump after this merges.Validation
just checkpassed.just testpassed: 943 passed, 2 skipped; 474 lifecycle (run withenv -u CLAUDE_CONFIG_DIR).quest check --base origin/mainpassed. The new dev shell builds, andquest help resolvesucceeds with the bumped pin.test/move.test.ts"quest check --fix" (after a merge commit and during a--no-commitmerge, renames/mistyped/prose links kept, nested root, unmerged refusal, outside a work tree).test/resolve.test.ts"upgrades a driver an older quest registered, but not a custom one".Review
mechanical fix by codex / Codex:
Merged base and re·solved src/cli/main.ts preserving PR link cleanup before base checkout validation; passed bun run build, bun run check, and bun run test (969 passed, 2 skipped).(head 7e95115)quest review, Codex, gpt-6.1-sol, medium effort, base origin/main acb8682.src/cli/move.ts: deleted paths fromgit logwere repository-relative, so a--rootnested in its repository never matched. Now--relative, with a test.Suggested follow-ups
quest-pinnedgroup PR. If it didn't, plan a fallback (a release-checklist step).🤖 Generated with Claude Code
(Written by Claude Opus 5.5)