diff --git a/runicnpc/PLAN.md b/runicnpc/PLAN.md index 0af97f6..eba7871 100644 --- a/runicnpc/PLAN.md +++ b/runicnpc/PLAN.md @@ -1871,7 +1871,11 @@ other four Rust repos keep their cutover by hand (D313); a case for them is a pl it running, its last step starts it again. The job may take 240 minutes (about 100 is usual). - **The copy on `main` is the trigger.** It holds the schedule and the step wiring; every step checks out `edge` and runs `edge`'s code, so the step outputs are a contract between the two (a test holds them equal), and the - review of PRs into `edge` is the real gate, since `edge`'s code runs with the merge token. + review of PRs into `edge` is the real gate, since `edge`'s code runs with the merge token. **Change both copies + together, byte for byte:** `main`'s and `edge`'s were added by separate commits, so a change to `edge`'s copy + alone makes the cutover PR an add/add conflict. That happened on 2026-11-06: runicnpc-rust#28 changed `edge`'s + copy only, and the cutover PR #29 could not merge though every gate had passed, until #30 gave `main` the same + file. Mend it on `main`, not `edge`: a new `edge` commit runs every gate again. - **Trying it.** `workflow_dispatch` is dry unless `dry_run` is exactly `false`: every gate runs and reports to the job summary; nothing is opened, edited, commented, merged or written. `force` works outside the weekend, and `code_ref` lets a dry run use another branch's code (a real run always uses `edge`).