diff --git a/quest/m0/doc-drift.md b/quest/m0/doc-drift.md new file mode 100644 index 0000000..38017c0 --- /dev/null +++ b/quest/m0/doc-drift.md @@ -0,0 +1,42 @@ +# [S] Docs and test notes match the code + +## Goal + +Ignored tests name a recipe that exists, and `just check` keeps it so, +`record.rs` describes how recording actually encodes, and `CONTRIBUTING.md`'s +PR rules fit the quest PRs agents open, so neither people nor agents follow +instructions that fail. + +## Plan + +Decided 2026-11-12 (maintainer, /quest-plan), from studio's trimmed Pullfrog +learnings: + +- `CONTRIBUTING.md:9` and `:15-21` require conventional-commit titles and + Problem/Approach/Impact sections on every PR, but quest PRs (#108, #110, + #112, #114, #115, #126, #141, #143) use the quest guide's sections and + `quest` type titles, such as `quest:` or `quest(m0/ux):`. Which changes? + - ✅ Exempt quest PRs: a PR that only adds or edits quests follows the quest + guide's format and a `quest` type title, with or without a scope + (rejected: make quest PRs carry the template too). +- 59 `#[ignore]` reasons say `just rs render-sw` (54 in + `rs/moq-scene/src/compositor.rs`, 5 in `rs/moq-studio/src/engine.rs`), but + the recipe is `just render-sw` in the root `justfile`. Fix every one main + holds, and add a `just check` step that fails when an `#[ignore]` reason + names a `just` recipe the root `justfile` does not define (`just + --summary` lists them). Open PR + [moq-dev/studio#146](https://github.com/moq-dev/studio/pull/146) adds + another with the wrong name and edits the recipe. Check skips drafts but + runs when one is marked ready, testing its merge with `main` as of that + run, so #146, a draft held until moq's timed catalog is pinned, runs the + lint once marked ready after this lands; if #146 lands first, this fixes + its reason too. `main`'s ruleset does not require an up-to-date branch, + so if #146 is ready with a passing Check when this lands, update its + branch (`gh pr update-branch 146`), or ask the session holding it to, and + hold it from merging until that Check passes. +- `rs/moq-studio/src/record.rs:4-6` says a recording of the program shares + the live encoders, but `rs/moq-studio/src/engine.rs:1811-1852` gives the + recording its own full-size encoder (`recorded_video`, `record: true`) in + a hidden broadcast. Rewrite only the program's half: the sources' half + (`record.rs:6-9`) is accurate, since local sources are read from the + studio's local broadcast (`engine.rs:932-935`). diff --git a/quest/m0/pin-on-main.md b/quest/m0/pin-on-main.md new file mode 100644 index 0000000..236ae29 --- /dev/null +++ b/quest/m0/pin-on-main.md @@ -0,0 +1,34 @@ +# [XS] The moq pin is checked to be on moq's main + +## Goal + +A PR that points the `moq` submodule at a commit not on moq-dev/moq's `main` +fails a check, as `AGENTS.md:14` already requires in prose. + +## Plan + +From studio's trimmed Pullfrog learnings (2026-11-12, maintainer, +/quest-plan). + +`sh/check-moq-pin.sh` checks only that the checkout matches the gitlink, that +the submodule is clean, and that no moq git dependency appears beside it. +`sh/upgrade-moq.sh` fetches moq's `main` but checks out any revision given. + +- Add a script that fetches moq's `main` into the submodule with its whole + commit history, since CI's submodule checkout is shallow (`--unshallow` + where it is, with `--filter=tree:0` to keep it small), and fails unless + `git merge-base --is-ancestor FETCH_HEAD` holds. +- Run it as its own step in `.github/workflows/check.yml`, not from + `just check`, so a local `just check` stays offline, and only on a pull + request whose `moq` gitlink differs from its base's + (`github.event.pull_request.base.sha`), so an unchanged pin fetches + nothing and never fails on a network error. The checkout is shallow + (depth 1, the merge commit only), so the step first runs + `git fetch --no-tags --depth=1 origin ` and compares + `git rev-parse :moq` with `git rev-parse HEAD:moq`; that fetch + is one small commit and reads no submodule. +- `just upgrade-moq ` runs the same ancestry test after its fetch and + refuses a revision off `main`. + +[pin-main](/quest/m0/pin-main.md) catches the studio up to moq's `main` and +is unaffected: the current pin, `644d48996`, is on `main`.