pm-github 2026.11.11 → 2026.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.11.12 - 2026-11-12
4
+
5
+ ### Dependencies
6
+
7
+ - Bump jscpd ([#232](https://github.com/unbraind/pm-github/pull/232))
8
+
3
9
  ## 2026.11.11 - 2026-11-11
4
10
 
5
11
  ### Fixed
6
12
 
13
+ - The gated sync holds a runner for up to two hours while it waits for caller CI it competes with for the same pool ([pm-github-fxhd](https://github.com/unbraind/pm-github/blob/main/.agents/pm/issues/pm-github-fxhd.toon))
7
14
  - Explain scheduled install mismatches and preserve redacted command failure diagnostics ([pm-github-o9r7](https://github.com/unbraind/pm-github/blob/main/.agents/pm/issues/pm-github-o9r7.toon))
8
15
  - Packed projection fixture cleanup can mask its own test outcome ([pm-github-mes8](https://github.com/unbraind/pm-github/blob/main/.agents/pm/issues/pm-github-mes8.toon))
9
16
 
package/README.md CHANGED
@@ -1096,7 +1096,7 @@ The script must emit the root `CHANGELOG.md` and remain inside the publication s
1096
1096
  | Validation | Strict PM health; explicit item/history scope committed together |
1097
1097
  | Branch and PR | Explicit force-with-lease against the observed bot ref; push only bot branch; owned PR lookup excludes forks |
1098
1098
  | No-op | Zero closes or no tracker diff creates no remote branch or PR; caller-only drift unpublished; stale owned PR closed |
1099
- | CI and landing | Dispatch caller checks after publication and branch refresh; request protected squash auto-merge in App mode; report parked approval-required runs |
1099
+ | CI and landing | Dispatch caller checks after publication; request protected squash auto-merge in both token modes; report parked approval-required runs; exit without waiting for caller CI |
1100
1100
 
1101
1101
  `ci-workflows` defaults to `ci.yml codeql.yml`, covering the fleet's CI and
1102
1102
  CodeQL workflows without querying branch protection. An explicit list replaces
@@ -1113,26 +1113,55 @@ even when those checks pass on the head SHA. For unattended landing, configure
1113
1113
  `automation-app-client-id` and the optional `automation_app_private_key` secret.
1114
1114
  After the local gates, the pinned official App-token action mints a token for
1115
1115
  only the caller repository, with contents/pull-requests/actions write and
1116
- checks/statuses read. Publication and refresh use that token, so native
1116
+ checks/statuses read. Publication and auto-merge arming use that token, so native
1117
1117
  `pull_request` workflows run without the GITHUB_TOKEN approval prompt and
1118
1118
  provide eligible required checks. Manual head dispatch remains additional
1119
1119
  verification. Empty credentials retain GITHUB_TOKEN and emit a setup notice;
1120
1120
  partial or failed App credentials stop publication. The private key is passed
1121
1121
  only to the token action, after caller scripts have completed.
1122
1122
 
1123
- In App mode, after dispatch the workflow requests `gh pr merge --auto --squash`
1124
- with the expected head SHA. A repository that disallows auto-merge emits a notice.
1125
- Without an App, maintainers approve native PR runs, wait for required checks and
1126
- conversations, and merge with an authorized credential; the workflow does not arm
1127
- auto-merge.
1128
- GitHub enforces required checks and conversation resolution. The same run
1129
- polls once per minute: when the PR is `BEHIND`, it requests a branch update
1130
- against the expected head, then dispatches all selected workflows and, in App
1131
- mode, requests auto-merge again when the new head appears. App mode stops within
1132
- forty minutes, inside its token's one-hour lifetime; legacy mode has a two-hour bound. The
1133
- existing daily schedules and separate sync/closeout concurrency groups remain.
1134
- A base change after the monitor window waits for the next daily rebuild.
1135
- Unresolved conversations continue to block landing.
1123
+ In both token modes, after dispatch the workflow requests `gh pr merge --auto --squash`
1124
+ with the expected head SHA and exits; required checks decide the merge, and no
1125
+ runner is held while they run. A repository that disallows auto-merge — no
1126
+ branch protection, or the repository setting disabled — emits a notice naming
1127
+ the reason and exits. The step checks the repository setting and protected
1128
+ base once before invoking `gh`, because `--auto` can merge immediately when
1129
+ nothing blocks the PR. Failed or unverifiable reads use the same fallback.
1130
+ The base must require at least one named PR CI status check, through classic
1131
+ protection or an applicable ruleset; reviews or conversations alone are
1132
+ insufficient. No required check produces `required_checks_unconfigured`, and an
1133
+ unreadable branch-rules API produces `required_checks_unverified`. Both notices
1134
+ use the scheduled-retry fallback.
1135
+ Require branches to be up to date before merging, or configure an applicable
1136
+ merge queue. The guard verifies ruleset strictness/merge queue or the matching
1137
+ classic GraphQL branch-protection rule before arming. Loose checks produce
1138
+ `required_checks_not_strict`; an unreadable classic freshness policy produces
1139
+ `branch_freshness_unverified`. Configure every intended CI check as required:
1140
+ the presence guard accepts a nonempty required context name and does not match
1141
+ that name to caller CI jobs.
1142
+ The next scheduled run rebuilds and retries; persistent settings or protection
1143
+ problems require maintainer attention before unattended landing can work.
1144
+ Without an App, maintainers must approve the native PR runs before required
1145
+ checks can pass; the already armed auto-merge then lands the protected PR.
1146
+ The `github_token_requires_approval` notice explains this approval step and the
1147
+ optional App configuration for unattended checks. A merge performed with
1148
+ GITHUB_TOKEN does not trigger default-branch `push` workflows; use the App when
1149
+ those follow-up workflows must run automatically. GitHub documents the
1150
+ [PR approval exception and suppressed push events](https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow).
1151
+ GitHub enforces required checks and conversation resolution. **Never wait in-job
1152
+ for caller CI: it takes runners from the same account pool**, so polling here can
1153
+ only lengthen the queue it waits on. The dispatch step performs no in-job wait —
1154
+ no contract requires one: the parked-run report reads runs GitHub already
1155
+ registered for the published head, and landing is owned by armed auto-merge or
1156
+ a later scheduled retry. The closeout armed flag records only an observed
1157
+ successful arm, so a failed arm stays revocable by the always() cleanup. A base advance after publication, or an unavailable
1158
+ auto-merge, waits for the next scheduled rebuild, which force-rebuilds the bot
1159
+ branch from the current default branch and re-arms. The existing daily schedules
1160
+ and separate sync/closeout concurrency groups remain. Unresolved conversations
1161
+ continue to block landing. Every job in the reusable workflows declares an
1162
+ explicit `timeout-minutes` (60 for sync, closeout and Dependabot; 10 for
1163
+ sync alerts), and each sync/closeout dispatch step has a five-minute hard limit.
1164
+ That limit covers API failures or hangs, not a wait for checks.
1136
1165
 
1137
1166
  See [the caller audit and one-time setup](docs/bot-pr-automation.md) for the App
1138
1167
  credential mapping, CodeQL trigger changes and explicit CI overrides. GitHub
@@ -1220,8 +1249,8 @@ run from the repository root. A script that regenerates the changelog must write
1220
1249
  the repository-root `CHANGELOG.md` to stay within the publication allowlist.
1221
1250
 
1222
1251
  Bot-created PRs using GITHUB_TOKEN may have `pull_request` runs parked in
1223
- `action_required`. The optional App token makes publication and branch refresh
1224
- start native eligible PR workflows automatically. Configured manual workflows
1252
+ `action_required`. The optional App token makes publication start native
1253
+ eligible PR workflows automatically. Configured manual workflows
1225
1254
  are also dispatched on the bot head; these jobs are additional verification,
1226
1255
  because GitHub excludes manual job checks from PR branch-rule evaluation. Each
1227
1256
  manual workflow must support `workflow_dispatch` and produce its intended check
package/dist/index.js CHANGED
@@ -5367,7 +5367,7 @@ const PROJECT_SYNC_FLAGS = [
5367
5367
  const defineExtension = (module) => module;
5368
5368
  export default defineExtension({
5369
5369
  name: "pm-github",
5370
- version: "2026.11.11",
5370
+ version: "2026.11.12",
5371
5371
  activate(api) {
5372
5372
  // -----------------------------------------------------------------------
5373
5373
  // schema — declare the GitHub provenance fields so the workspace knows them
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-github",
3
- "version": "2026.11.11",
3
+ "version": "2026.11.12",
4
4
  "description": "GitHub Issues + Projects v2 integration. Imports issues as pm items (`pm github import`), exports pm items as GitHub issues, syncs issue state, and bidirectionally syncs pm items with a GitHub Projects v2 board (`pm github project import/sync/list/fields`) — mapping pm status to the board Status column with idempotent, no-data-loss provenance.",
5
5
  "author": "@unbraind",
6
6
  "entry": "./dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pm-github",
3
- "version": "2026.11.11",
3
+ "version": "2026.11.12",
4
4
  "description": "GitHub Issues importer extension for pm-cli",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,7 +57,7 @@
57
57
  "@unbrained/pm-cli": "2026.11.6",
58
58
  "c8": "12.0.0",
59
59
  "eslint": "10.14.0",
60
- "jscpd": "5.4.2",
60
+ "jscpd": "5.4.3",
61
61
  "pm-changelog": "2026.11.5",
62
62
  "pm-ops": "2026.11.5",
63
63
  "typescript": "7.0.2"