fix(ci): replace gh api REST passthroughs with Gitea-compatible shapes (#75 class D) #81

Closed
claude-ceo-assistant wants to merge 7 commits from fix/issue75-class-D-gh-api-to-gitea-rest into main

Summary

Class D of the post-#66 sweep tracked in #75: replace gh api REST passthroughs with the Gitea-shape that actually works. Three files, three different fix patterns because each underlying capability has a different relationship with Gitea's API surface.

Why

gh api calls hit /api/v3/... (GitHub Enterprise REST shape). Gitea exposes /api/v1/. Setting GH_HOST does not help — the path is hardcoded in gh. So every gh api ... call returns 404. Per #75 audit + 2026-05-07 endpoint probe.

Files + fix shape

File Old New
auto-promote-on-e2e.yml gh api repos/.../compare/A...B returning .status actions/checkout fetch-depth=200 + git merge-base --is-ancestor (Gitea's /compare does NOT accept full SHAs — verified empirically 2026-05-07)
ci.yml (canvas-deploy-reminder) gh api -X POST repos/.../commits/{sha}/comments Write reminder to $GITHUB_STEP_SUMMARY (Gitea has NO commit-comments endpoint — verified 404 2026-05-07)
check-merge-group-trigger.yml gh api .../branches/X/protection/required_status_checks to lint merge_group trigger No-op stub (Gitea has no merge queue → the dead-lock pattern this linter catches cannot occur by construction)

Test plan

  • YAML / shell syntax validates for all three files
  • git merge-base --is-ancestor ancestry semantics match GitHub compare API status semantics bit-exact: ahead=current-is-ancestor-of-target, behind=target-is-ancestor-of-current, diverged=neither
  • Live curl against Gitea confirms /compare/A...B works on branch/tag refs but returns BaseNotExist on full SHAs — justifying the local-git approach
  • Live curl confirms /commits/{sha}/comments is 404 on Gitea
  • The check-merge-group-trigger stub mirrors the existing CodeQL stub pattern (PR #51 / #156)

Hostile self-review — three weakest spots

  1. fetch-depth: 200 may be insufficient if :latest falls catastrophically behind. 200 commits ≈ ~1 week of main activity at current cadence; if a multi-week cron pause leaves :latest pointing at an older revision, the ancestry compute falls into the error branch and the workflow goes red instead of silently mispromoting. That's the safer failure mode, but worth documenting as a tunable.
  2. Dropping commit comments is a behaviour change: any operator habit of reading commit comments to confirm a deploy is needed will silently break. Step summary is the new surface — same content, different page.
  3. The merge-group-trigger stub assumes no future Gitea merge queue: if Gitea grows a merge queue (none on roadmap as of 2026-05-07), the stub becomes incorrect. The file header documents the re-enable path so this isn't a sunk cost.

Security + version impact

  • ci.yml deploy-reminder permission tightens from contents: writecontents: read (least-privilege; no longer needs to write commit comments)
  • No new secrets, no token-scope changes
  • Workflow names + trigger surfaces preserved so external callers (branch protection, schedule fan-out, workflow_run cascades) stay green

Closes part of #75

Companion PRs: #80 (class A), upcoming class F.

🤖 Generated with Claude Code

## Summary Class D of the post-#66 sweep tracked in #75: replace `gh api` REST passthroughs with the Gitea-shape that actually works. Three files, three different fix patterns because each underlying capability has a different relationship with Gitea's API surface. ## Why `gh api` calls hit `/api/v3/...` (GitHub Enterprise REST shape). Gitea exposes `/api/v1/`. Setting `GH_HOST` does not help — the path is hardcoded in `gh`. So every `gh api ...` call returns 404. Per #75 audit + 2026-05-07 endpoint probe. ## Files + fix shape | File | Old | New | |---|---|---| | `auto-promote-on-e2e.yml` | `gh api repos/.../compare/A...B` returning `.status` | `actions/checkout fetch-depth=200` + `git merge-base --is-ancestor` (Gitea's `/compare` does NOT accept full SHAs — verified empirically 2026-05-07) | | `ci.yml` (canvas-deploy-reminder) | `gh api -X POST repos/.../commits/{sha}/comments` | Write reminder to `$GITHUB_STEP_SUMMARY` (Gitea has NO commit-comments endpoint — verified 404 2026-05-07) | | `check-merge-group-trigger.yml` | `gh api .../branches/X/protection/required_status_checks` to lint merge_group trigger | No-op stub (Gitea has no merge queue → the dead-lock pattern this linter catches cannot occur by construction) | ## Test plan - YAML / shell syntax validates for all three files - `git merge-base --is-ancestor` ancestry semantics match GitHub compare API status semantics bit-exact: ahead=current-is-ancestor-of-target, behind=target-is-ancestor-of-current, diverged=neither - Live curl against Gitea confirms `/compare/A...B` works on branch/tag refs but returns `BaseNotExist` on full SHAs — justifying the local-git approach - Live curl confirms `/commits/{sha}/comments` is 404 on Gitea - The check-merge-group-trigger stub mirrors the existing CodeQL stub pattern (PR #51 / #156) ## Hostile self-review — three weakest spots 1. **`fetch-depth: 200` may be insufficient if `:latest` falls catastrophically behind**. 200 commits ≈ ~1 week of main activity at current cadence; if a multi-week cron pause leaves :latest pointing at an older revision, the ancestry compute falls into the `error` branch and the workflow goes red instead of silently mispromoting. That's the safer failure mode, but worth documenting as a tunable. 2. **Dropping commit comments is a behaviour change**: any operator habit of reading commit comments to confirm a deploy is needed will silently break. Step summary is the new surface — same content, different page. 3. **The merge-group-trigger stub assumes no future Gitea merge queue**: if Gitea grows a merge queue (none on roadmap as of 2026-05-07), the stub becomes incorrect. The file header documents the re-enable path so this isn't a sunk cost. ## Security + version impact - `ci.yml` deploy-reminder permission tightens from `contents: write` → `contents: read` (least-privilege; no longer needs to write commit comments) - No new secrets, no token-scope changes - Workflow names + trigger surfaces preserved so external callers (branch protection, schedule fan-out, workflow_run cascades) stay green ## Closes part of #75 Companion PRs: #80 (class A), upcoming class F. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-ceo-assistant added 1 commit 2026-05-07 22:36:35 +00:00
fix(ci): replace gh api REST passthroughs with Gitea-compatible shapes (#75 class D)
Some checks failed
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 9s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 8s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 10s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 19s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 10s
E2E API Smoke Test / detect-changes (pull_request) Successful in 21s
CI / Detect changes (pull_request) Successful in 31s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 20s
Retarget main PRs to staging / Retarget to staging (pull_request) Has been skipped
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 16s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 19s
Harness Replays / detect-changes (pull_request) Successful in 21s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 23s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 24s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 26s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 30s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 24s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 37s
Harness Replays / Harness Replays (pull_request) Successful in 23s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 15s
CI / Python Lint & Test (pull_request) Successful in 8m27s
CI / Canvas (Next.js) (pull_request) Failing after 9m59s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 12m57s
aa6458b42d
Part of the post-#66 sweep to remove `gh` CLI dependencies that fail
silently against Gitea (which exposes /api/v1 only — no GraphQL → 405,
no /api/v3 → 404). Class D covers `gh api` REST passthroughs that
either have a Gitea v1 equivalent at a different path/shape or no
equivalent at all.

Three files in this class, each with a different fix shape because
each underlying Gitea capability is different:

`auto-promote-on-e2e.yml` (compute SHA ancestry):
  Old: `gh api repos/.../compare/A...B` returning `.status`
       (ahead|behind|identical|diverged).
  Gitea: `/api/v1/repos/.../compare/A...B` accepts only branch / tag
       refs — full commit SHAs return `BaseNotExist`. So even a
       "translate the URL" rewrite would fail. Verified empirically
       2026-05-07: branches/tags work, SHAs don't.
  Fix:  Add `actions/checkout@v6 fetch-depth=200` + use `git merge-
       base --is-ancestor` locally. Exact same four-bucket semantics
       (ahead | behind | diverged | error), zero cross-host API
       dependency. Same pattern PR #66 used for auto-sync. The 200-
       commit depth comfortably covers any realistic divergence
       between :latest and a candidate retag (promotes are minutes
       apart, not hundreds of commits).

`ci.yml` (canvas-deploy-reminder commit comment):
  Old: `gh api -X POST repos/.../commits/{sha}/comments` posting a
       deploy-reminder body for the operator.
  Gitea: NO commit-comments endpoint exists — `/repos/.../commits/
       {sha}/comments` returns 404 (verified 2026-05-07). Gitea only
       exposes `/commits/{sha}/statuses` for commit-level surface,
       which is the wrong shape for a free-form reminder.
  Fix:  Drop the API call. Write the reminder body to
       `$GITHUB_STEP_SUMMARY` instead. The reminder is entirely
       operator-facing and is just as discoverable on the run summary
       page (which an operator naturally lands on when they need to
       action a deploy). Commit comments were a stale UI artefact of
       the GitHub era, not a load-bearing automation surface.
  Permission: drop `contents: write` (no longer needed) → `read`,
       smallest scope per least-privilege.

`check-merge-group-trigger.yml` (merge_group: trigger linter):
  Old: `gh api .../branches/staging/protection/required_status_checks`
       reading the contexts list, then walking workflow files.
  Gitea: branch-protection API is at /api/v1/repos/.../branch_
       protections/{name} (different path) with `status_check_
       contexts` (different field name) — but the entire workflow
       only existed to lint that workflows producing a required
       check declare a `merge_group:` trigger, which is needed
       because GitHub's merge queue dead-locks at AWAITING_CHECKS
       when the trigger is missing. Gitea has NO merge queue, NO
       gh-readonly-queue/... ref shape, NO merge_group event
       semantics. The dead-lock pattern this linter catches cannot
       occur on Gitea by construction.
  Fix:  Convert to no-op stub (same pattern as the CodeQL stub
       landed in PR #51). Workflow name + trigger surface preserved
       so any external referrer (none confirmed via the 2026-05-07
       branch-protection audit) keeps resolving. Re-enable path
       documented in the file header for if/when Gitea grows a
       merge queue.

curl invocation pattern: `curl --fail-with-body -sS` (NOT `-fsS` —
the two short-fail flags are mutually exclusive in modern curl).

Token model: workflows continue to use act_runner's GITHUB_TOKEN
where they still need API access (`auto-promote-on-e2e.yml`'s
checkout uses the runner's default token; `ci.yml` no longer needs
any API auth for the deploy-reminder step; `check-merge-group-
trigger.yml` no longer makes any API calls).

Verification:
- YAML syntax validates for all three files.
- Live curl against Gitea confirms `/compare/A...B` accepts branch
  refs (200, total_commits=N) and refuses full SHAs (404,
  BaseNotExist) — justifying the local-git approach.
- `/repos/.../commits/{sha}/comments` confirmed 404 on Gitea.
- `git merge-base --is-ancestor` exit-code semantics match the
  GitHub compare API status semantics exactly: ahead = current is
  ancestor of target; behind = target is ancestor of current;
  diverged = neither.

Closes part of #75. Class A landed in #80; class F (gh run list →
no Gitea workflow-runs API at all) lands in a separate PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Ghost approved these changes 2026-05-07 22:52:15 +00:00
Dismissed
Ghost left a comment
First-time contributor

gh-CLI sweep class D (gh api REST passthroughs). auto-promote-on-e2e.yml (compare→git merge-base), ci.yml (commit-comment→step summary), check-merge-group-trigger.yml (no-op stub — Gitea has no merge queue). YAML validates; bit-exact-equivalent ancestry semantics verified. 0 failures. Ready.

gh-CLI sweep class D (gh api REST passthroughs). auto-promote-on-e2e.yml (compare→git merge-base), ci.yml (commit-comment→step summary), check-merge-group-trigger.yml (no-op stub — Gitea has no merge queue). YAML validates; bit-exact-equivalent ancestry semantics verified. 0 failures. Ready.
claude-ceo-assistant added 1 commit 2026-05-07 22:53:26 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 5s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 6s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 6s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 12s
branch-protection drift check / Branch protection drift (pull_request) Successful in 17s
pr-guards / disable-auto-merge-on-push (pull_request) Failing after 6s
CI / Detect changes (pull_request) Successful in 16s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 15s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 13s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 15s
E2E API Smoke Test / detect-changes (pull_request) Successful in 16s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 15s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 13s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 14s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 21s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 10s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 19s
CI / Python Lint & Test (pull_request) Successful in 8m2s
CI / Canvas (Next.js) (pull_request) Failing after 9m1s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 12m49s
85aa3eb4a9
claude-ceo-assistant added 1 commit 2026-05-07 23:39:33 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 3s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 3s
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 3s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 3s
pr-guards / disable-auto-merge-on-push (pull_request) Failing after 4s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 11s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 13s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 13s
E2E API Smoke Test / detect-changes (pull_request) Successful in 13s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 13s
branch-protection drift check / Branch protection drift (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 15s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 14s
CI / Detect changes (pull_request) Successful in 18s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 11s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 12s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 18s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 19s
CI / Canvas (Next.js) (pull_request) Failing after 3m13s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 4m7s
CI / Python Lint & Test (pull_request) Successful in 7m11s
e58d7c17ad
claude-ceo-assistant added 1 commit 2026-05-08 00:20:59 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 6s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 13s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 5s
branch-protection drift check / Branch protection drift (pull_request) Successful in 17s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 5s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 5s
CI / Detect changes (pull_request) Successful in 12s
pr-guards / disable-auto-merge-on-push (pull_request) Failing after 7s
E2E API Smoke Test / detect-changes (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 15s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 13s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 19s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 19s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 21s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 10s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 12s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 33s
CI / Python Lint & Test (pull_request) Successful in 7m33s
CI / Canvas (Next.js) (pull_request) Failing after 8m25s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 9m22s
2ab533af58
claude-ceo-assistant dismissed Ghost’s review 2026-05-08 00:21:00 +00:00
Reason:

New commits pushed, approval review dismissed automatically according to repository settings

claude-ceo-assistant added 1 commit 2026-05-08 00:54:24 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
CI / Detect changes (pull_request) Successful in 16s
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 6s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 14s
branch-protection drift check / Branch protection drift (pull_request) Successful in 18s
pr-guards / disable-auto-merge-on-push (pull_request) Failing after 7s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 11s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 10s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 9s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 16s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 16s
E2E API Smoke Test / detect-changes (pull_request) Successful in 18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 17s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 13s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 13s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 9s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 19s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 7s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 27s
CI / Python Lint & Test (pull_request) Successful in 7m32s
CI / Canvas (Next.js) (pull_request) Failing after 8m3s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 9m41s
7ec87ee2c6
claude-ceo-assistant added 1 commit 2026-05-08 01:27:52 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 8s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 8s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 15s
branch-protection drift check / Branch protection drift (pull_request) Successful in 19s
CI / Detect changes (pull_request) Successful in 18s
pr-guards / disable-auto-merge-on-push (pull_request) Failing after 9s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 15s
E2E API Smoke Test / detect-changes (pull_request) Successful in 17s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 17s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 17s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 18s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 19s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 7s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 14s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 9s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 8s
CI / Python Lint & Test (pull_request) Successful in 7m32s
CI / Canvas (Next.js) (pull_request) Failing after 8m50s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Successful in 12m57s
31d6debba8
claude-ceo-assistant added 1 commit 2026-05-08 02:46:44 +00:00
Merge branch 'main' into fix/issue75-class-D-gh-api-to-gitea-rest
Some checks failed
CI / Shellcheck (E2E scripts) (pull_request) Successful in 29s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 16s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 17s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 19s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 13s
CI / Canvas (Next.js) (pull_request) Failing after 2m3s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Failing after 2m50s
CI / Python Lint & Test (pull_request) Successful in 7m12s
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 6s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 7s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 16s
CI / Detect changes (pull_request) Successful in 17s
branch-protection drift check / Branch protection drift (pull_request) Successful in 22s
pr-guards / disable-auto-merge-on-push (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 20s
E2E API Smoke Test / detect-changes (pull_request) Successful in 21s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 19s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 19s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 21s
249d6897fa
Author
Owner

Closing as stale during 2026-05-09 triage. mergeable=False due to base conflicts, plus the lone approval is from Ghost (deleted-user) so the gate isn't satisfiable as-is. Class D (gh-CLI passthrough cleanup) work is tracked in tasks #195-#197; reopen + rebase if there's a remaining gap not covered by those.

— claude-ceo-assistant (triage)

Closing as stale during 2026-05-09 triage. mergeable=False due to base conflicts, plus the lone approval is from `Ghost` (deleted-user) so the gate isn't satisfiable as-is. Class D (gh-CLI passthrough cleanup) work is tracked in tasks #195-#197; reopen + rebase if there's a remaining gap not covered by those. — claude-ceo-assistant (triage)
Some checks are pending
CI / Shellcheck (E2E scripts) (pull_request) Successful in 29s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 16s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 17s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 19s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 13s
CI / Canvas (Next.js) (pull_request) Failing after 2m3s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
CI / Platform (Go) (pull_request) Failing after 2m50s
CI / Python Lint & Test (pull_request) Successful in 7m12s
Check merge_group trigger on required workflows / Required workflows have merge_group trigger (pull_request) Successful in 6s
CodeQL / Analyze (${{ matrix.language }}) (go) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (javascript-typescript) (pull_request) Successful in 7s
CodeQL / Analyze (${{ matrix.language }}) (python) (pull_request) Successful in 7s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 16s
CI / Detect changes (pull_request) Successful in 17s
branch-protection drift check / Branch protection drift (pull_request) Successful in 22s
pr-guards / disable-auto-merge-on-push (pull_request) Successful in 11s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 20s
E2E API Smoke Test / detect-changes (pull_request) Successful in 21s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 18s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 19s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 19s
Required
Details
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 21s
sop-tier-check / tier-check (pull_request)
Required

Pull request closed

Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#81
No description provided.