Chasing Hyprland
HyprExpo supports released Hyprland targets on master and one exact development target on hyprland-git. This procedure observes upstream changes, prepares reviewable compatibility work, and prepares release packets. It does not publish or merge by itself.
Observe
Run from an up-to-date checkout with GitHub CLI access:
python3 scripts/watch-hyprland.py --format markdownThe report is read-only. It records the development pin, upstream main, release candidates, current probe evidence, and existing candidates. A failed observation is incomplete evidence, never proof that no work exists.
The scheduled upstream-tip workflow runs this same observation before its expensive build. Scheduled GitHub workflows are best effort and run from the default branch; a delayed or missed schedule is not a compatibility result.
Prepare one development target
Only the designated manual runner writes candidates. Actions observe. Do not run another writer from Hermes or a second host until a shared writer lease exists.
- Save the observer report. If a matching candidate or live job exists, inspect it and stop; do not duplicate it.
- Create an isolated branch from current
hyprland-gitusing the exact upstream commit from the report. Do not use the desktop checkout. - Update the development target,
flake.nix, and resolved lock together. Preserve release targets and hyprpm pins. - Diagnose the exact build failure against the captured upstream source. Keep existing behavior tests meaningful; do not fake headers, change the target, disable sandboxing, or suppress features to obtain a build.
- Run tooling, C++ suites, relevant input tests, documentation build, exact build, and affected disposable runtime proof. Record hardware gaps.
- Push one owned candidate PR into
hyprland-git. Keep incomplete work draft and include exact source/tree/lock/probe/runtime evidence plus the next gate.
The standing tracking PR uses the development contract only while it remains the configured same-repository draft tracker. It is not a release-promotion PR.
Prepare a released target
Run observation first. A new stable release is a separate work item identified by release ID, tag, and peeled tag commit. Old unsupported releases, drafts, prereleases, malformed tags, and a tag that moved need explicit review.
Choose a compatible historical candidate if hyprland-git has moved beyond the release. Create a local packet and a reviewable promotion PR containing exact upstream/plugin/tree/lock identities, support decisions, artifacts, runtime receipt, pin ancestry, notes, and remaining gates. Follow the release promotion guide.
Do not create a tag, GitHub Release, or prerelease packet in public state. The current stable publisher accepts broad v* tags; release-candidate publication requires separate version, trigger, collision, provenance, and authorization work first.
Resuming and Hermes
Bound one repair attempt to three hypotheses and two hours of active work. Keep a receipt when a target remains broken. Before continuing, re-observe refs and job handles; upstream may have moved or another contributor may own the work.
Hermes is optional later. It must use this procedure as approved context, have separate read-only observation and constrained candidate-write credentials, an isolated workspace, persistent receipts, single-writer ownership, capped jobs, and a tested disable path. It must not receive stable-release publisher access.