Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions docs/roadmaps/entries/PMAT-5843.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- id: PMAT-5843
github_issue: 5843
item_type: task
title: 'MQ feeder: every 5 min enqueue the oldest green non-draft PR when the merge queue is empty'
status: planned
priority: high
assigned_to: null
created: 2026-10-21T10:55:00Z
updated: 2026-10-21T10:55:00Z
spec: null
acceptance_criteria:
- 'scripts/mq_feeder.sh --self-test green; timer live; kicked PRs re-read at 30s and skipped'
phases: []
subtasks: []
estimated_effort: null
labels:
- kind:code
notes: null
epic: 5510
19 changes: 19 additions & 0 deletions docs/roadmaps/entries/PMAT-5846.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
- id: PMAT-5846
github_issue: 5846
item_type: task
title: 'arm_pr_automerge.sh: stale guard-tree check name (default must be x86-main)'
status: planned
priority: high
assigned_to: null
created: 2026-10-21T10:13:29Z
updated: 2026-10-21T10:13:29Z
spec: null
acceptance_criteria:
- 'default GUARD_CHECK_NAME names a check run that exists on PR heads; --self-test fixtures updated'
phases: []
subtasks: []
estimated_effort: null
labels:
- kind:code
notes: null
epic: 5510
38 changes: 38 additions & 0 deletions docs/roadmaps/roadmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25359,6 +25359,44 @@ Not done, pending the ruling: moving the 31 fixture files to an obviously synthe
- kind:code
notes: null
epic: 5510
- id: PMAT-5843
github_issue: 5843
item_type: task
title: 'MQ feeder: every 5 min enqueue the oldest green non-draft PR when the merge queue is empty'
status: planned
priority: high
assigned_to: null
created: 2026-10-21T10:55:00Z
updated: 2026-10-21T10:55:00Z
spec: null
acceptance_criteria:
- 'scripts/mq_feeder.sh --self-test green; timer live; kicked PRs re-read at 30s and skipped'
phases: []
subtasks: []
estimated_effort: null
labels:
- kind:code
notes: null
epic: 5510
- id: PMAT-5846
github_issue: 5846
item_type: task
title: 'arm_pr_automerge.sh: stale guard-tree check name (default must be x86-main)'
status: planned
priority: high
assigned_to: null
created: 2026-10-21T10:13:29Z
updated: 2026-10-21T10:13:29Z
spec: null
acceptance_criteria:
- 'default GUARD_CHECK_NAME names a check run that exists on PR heads; --self-test fixtures updated'
phases: []
subtasks: []
estimated_effort: null
labels:
- kind:code
notes: null
epic: 5510
- id: PMAT-5873
github_issue: 5873
item_type: task
Expand Down
179 changes: 179 additions & 0 deletions scripts/mq_feeder.sh

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions scripts/mq_feeder_install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# mq_feeder_install.sh -- PMAT-5843. Install the feeder AND the arm script it calls into the path the user units run
# (%h/.local/libexec/mq-feeder). The feeder resolves arm_pr_automerge.sh next to itself, so both must be there.
# Run from a checkout of origin/main; re-run after either script changes (forjar converges the same files on the hosts).
# Usage: mq_feeder_install.sh [DEST]
set -euo pipefail
src="$(cd "$(dirname "$0")" && pwd)"
dest="${1-$HOME/.local/libexec/mq-feeder}"
# SEC010 (bashrs): the install target is an argument, so it must be absolute (so an explicit empty arg is refused too) and free of `..`.
case "$dest" in
/*) ;;
*) echo "mq_feeder_install: DEST must be an absolute path, got '$dest'" >&2; exit 2 ;;
esac
case "/$dest/" in
*/../*) echo "mq_feeder_install: DEST must not contain '..': $dest" >&2; exit 2 ;;
esac
mkdir -p "$dest"
for s in mq_feeder.sh arm_pr_automerge.sh; do
install -m 0755 "$src/$s" "$dest/$s"
done
sha256sum "$dest/mq_feeder.sh" "$dest/arm_pr_automerge.sh" > "$dest/INSTALLED.sha256"
echo "installed to $dest"
5 changes: 5 additions & 0 deletions scripts/systemd/mq-feeder-summary.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[Unit]
Description=mq-feeder hourly summary line (PMAT-5843)
[Service]
Type=oneshot
ExecStart=%h/.local/libexec/mq-feeder/mq_feeder.sh --summary
6 changes: 6 additions & 0 deletions scripts/systemd/mq-feeder-summary.timer
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[Unit]
Description=mq-feeder summary at :45
[Timer]
OnCalendar=*:45:00
[Install]
WantedBy=timers.target
5 changes: 5 additions & 0 deletions scripts/systemd/mq-feeder.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[Unit]
Description=mq-feeder: enqueue the oldest green PR when the merge queue is empty (PMAT-5843)
[Service]
Type=oneshot
ExecStart=%h/.local/libexec/mq-feeder/mq_feeder.sh
8 changes: 8 additions & 0 deletions scripts/systemd/mq-feeder.timer
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Unit]
Description=mq-feeder tick, every 5 min (PMAT-5843)
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
AccuracySec=10s
[Install]
WantedBy=timers.target
Loading